WinForms选项卡控件问题

时间:2010-12-10 04:18:56

标签: winforms visual-studio-2010 tabcontrol

我有一个以两种模式显示的表单。切换模式完全改变了表单的外观,就像您使用选项卡控件并在每个选项卡上具有不同的控件布局一样。

如果我可以隐藏选项卡本身,选项卡控件将是完美的。

当然,我可以使用两个面板并以编程方式显示和隐藏适当的面板。我尝试了这个,但我的锚定一直搞砸了(我认为这是一个Visual Studio设计器错误。)

理想情况下,我想使用“向导”控件,它是无标签的,在设计时,绘制第一页的控件,将“PageNumber”属性切换到第二页,然后将控件拖放到第二页。

我认为TabControl具有不带标签的功能,例如,它可以很好地创建一个向导式界面。

这样做的最佳方法是什么,以便我的设计时间外观模仿运行时间?

此刻,我有2个面板,一个直接在另一个面板上,我翻转了每个面板的可见属性,我的自动锚定变得全部被VS搞砸了。我可能不得不求助于编写我自己的存档代码,这并不难,但我喜欢它,当设计环境对屏幕运行时的外观反应的可能性非常接近。它只会让生活更轻松。

我也有Telerik Q3 WinForm控件,如果该控件集中有替代品......

建议?

4 个答案:

答案 0 :(得分:13)

这是可能的。在项目中添加一个新类并粘贴下面显示的代码。编译。将新控件从工具箱顶部拖放到表单上。它在设计时有标签,因此您可以轻松地在页面之间切换。但是在运行时隐藏它们,使用代码中的SelectedIndex或SelectedTab属性来切换视图。

using System;
using System.Windows.Forms;

class PageControl : TabControl {
  protected override void WndProc(ref Message m) {
    // Hide tabs by trapping the TCM_ADJUSTRECT message
    if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
    else base.WndProc(ref m);
  }
}

答案 1 :(得分:0)

对于它的价值,我建议您使用SplitContainer,并在需要时从左向右移动SplitSeparator ......

我不确定我的答案会有多大价值,但想想看,这可能是一个方便的解决方案。

希望这有帮助,

答案 2 :(得分:0)

我肯定会使用您要显示的每个“内容”的自定义“用户控件”,如您所述,以编程方式显示/隐藏它们。关于“锚定”,将东西放在你想要的“用户控件”上并分别锚定。然后,让您的“用户控件”具有自己的锚属性,以便在将其添加到表单时使用。仅当控件可见时,才会显示调整大小,锚点重新定位和重新绘制控件。因此,当您第一次启动表单时,请确保使IT(用户控件)可见,然后根据需要将其高度/宽度更改为初始显示到表单,然后从那里运行。

答案 3 :(得分:0)

模仿隐藏Tab我只是Remove它。问题是你无法轻易找回它所以我在表格中使用它,我知道它会因某种特定原因而被打开并在之后关闭,而不需要实际使用删除的标签。如果您使用其他参数再次打开表单,它将使用其他选项卡打开并删除不需要的表单。