【问题标题】:Hide TabControl buttons to manage stacked Panel controls隐藏 TabControl 按钮以管理堆叠的面板控件
【发布时间】:2010-05-09 15:55:35
【问题描述】:

我需要处理多个面板,其中包含各种数据掩码。每个面板都应使用 TreeView 控件可见。

此时,我手动处理面板的可见性,方法是使选定的面板可见并将其置于顶部。

实际上这并不太舒服,尤其是在 UI 设计师中,因为当我添加一个全新的面板时,我必须调整每个面板的大小然后进行设计...

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

另一种解决方案是 ipotethic “StackPanelControl”,其中面板使用堆栈排列,但我在任何地方都找不到。

处理这种 UI 的最佳解决方案是什么?

【问题讨论】:

    标签: c# winforms tabcontrol stackpanel


    【解决方案1】:

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

    您将在设计时获得选项卡,以便您可以轻松地在页面之间切换。选项卡在运行时隐藏,使用 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);
      }
    }
    

    【讨论】:

      【解决方案2】:

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

      对于以上内容, 您需要设置 TabControl 的以下属性。

      tabControl.Multiline = true;
      tabControl.Appearance = TabAppearance.Buttons;
      tabControl.ItemSize = new System.Drawing.Size(0, 1);
      tabControl.SizeMode = TabSizeMode.Fixed;
      tabControl.TabStop = false;
      

      【讨论】:

        猜你喜欢
        • 2016-03-30
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2014-07-28
        • 2015-03-27
        • 1970-01-01
        • 1970-01-01
        • 2012-07-19
        相关资源
        最近更新 更多