2010-03-24 112 views
5

我正在构建一个小的选项卡式c#表单,我希望每个选项卡页都具有一些常见功能,特别是一个OK按钮和一个错误消息,并为特定的空间表单域。在C#中创建一个自定义的TabPage控件

有没有其他人做过类似的事情,你是如何接近它的?

+0

每个页面上的确定按钮? – 2010-03-24 15:30:58

+1

不正确的答案,但我想我会做一些测试,扩大原来的tabcontrolpage,添加您需要的常见功能 – michele 2010-03-24 15:32:47

回答

7

这很容易做到而不扩展TabControl/TabPage。

定义一个UserControl,并在每个TabPage上放置所需的常用元素。

在窗体上:继续并为每个TabPage设计TabPage特定的控件:确保一旦UserControl添加完成后,它们不会与公共控件重叠。

在主窗体的窗体的Load事件做这样的事情:

// form scoped variable to hold a referece to the current UserControl 
    private UserControl1 currentUserControl; 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     foreach(TabPage theTabPage in tabControl1.TabPages) 
     { 
      currentUserControl = new UserControl1(); 

      theTabPage.Margin = new Padding(0); 
      theTabPage.Padding = new Padding(0); 

      theTabPage.Controls.Add(currentUserControl); 

      currentUserControl.Location = new Point(0,0); 

      currentUserControl.Dock = DockStyle.Fill; 

      currentUserControl.SendToBack(); 
     } 
    } 

即使“SendToBack是不是真的在这里需要的是‘保险’,你的用户控件与”好吧按钮,用于错误消息的TextBox放置在您分配给每个TabPage的单个控件后面。

+1

那些倒票的人:理解为什么不喜欢这个解决方案将非常感激。谢谢, – BillW 2010-03-25 14:41:31

+0

@ BillW其实,一些屁股标记为垃圾邮件。现在,我不知道这是一个好的答案,但我知道它不是垃圾邮件。所以,+1可以帮助弥补代表损失并中和你的答案等级。 – 2010-03-25 18:45:10

+0

嗨BillW, 我喜欢这个解决方案。我知道这意味着我失去了“看到”控制的设计师支持,但我认为它很好地完成了这项工作,谢谢。 – 2010-03-25 23:45:55

2

几个思路:

  • 保持一个tabpanel外共同控制;
  • 扩展TabPage/TabControl
  • 使用常用按钮创建一个基本的UserControl并使其继承自usercontrols。然后为每个TabPage放置一个继承的用户控件。