在C#中创建自定义TabPage控件

时间:2010-03-24 15:25:42

标签: c# winforms user-controls

我正在构建一个小标签c#表单,我希望每个标签页都有一些常用功能,特别是OK按钮和错误消息,并为特定表单字段留出空间。

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

2 个答案:

答案 0 :(得分:7)

如果不扩展TabControl / TabPage,这很容易做到。

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

在表单上:继续为每个TabPage设计所需的TabPage特定控件:确保在添加UserControl后它们不会与公共控件在视觉上重叠。

在主表单的表单加载事件中执行以下操作:

    // 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,但是你的UserControl带有'Okay按钮和TextBox的错误信息“放在你分配给每个TabPage的各个控件后面是”保险“。

答案 1 :(得分:2)

几个想法:

  • 将常用控件保留在tabpanel之外;
  • 扩展TabPage / TabControl
  • 使用公共按钮创建一个基本UserControl,并创建从其继承的usercontrol。然后为每个TabPage放置一个继承的usercontrol。