隐藏TabControlbutton来pipe理堆叠面板控件

我需要处理多个面板,包含不同的数据掩码。 每个面板应该使用TreeView控件可见。

此时,我手动处理面板的可见性,使所选的一个可见并将其置于顶部。

其实这不是很舒适,特别是在UIdevise师,因为当我添加一个全新的面板,我不得不调整每个面板,然后devise它…

一个好的解决scheme是使用TabControl,每个面板都包含在TabPage中。 但我找不到任何方法来隐藏TabControlbutton,因为我已经有一个TreeView的select项目。

另一种解决scheme是ipotethic“StackPanelControl”,其中面板使用堆栈进行排列,但我无法在任何地方find它。

什么是处理这种用户界面的最佳解决scheme?

你需要一点Win32 API魔法。 选项卡控件发送TCM_ADJUSTRECT消息以允许应用程序调整选项卡大小。 为您的项目添加一个新类,并粘贴下面显示的代码。 编译。 将新的控件从工具箱的顶部放到表单上。

您将在devise时获得标签,以便您可以轻松地在页面之间切换。 选项卡在运行时隐藏,使用SelectedIndex或SelectedTab属性在“视图”之间切换。

using System; using System.Windows.Forms; class StackPanel : 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); } }