c# - 隐藏 TabControl 按钮以管理堆叠的面板控件

标签 c# winforms tabcontrol stackpanel

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

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

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

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

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

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

最佳答案

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

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

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);
  }
}

关于c# - 隐藏 TabControl 按钮以管理堆叠的面板控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798215/

相关文章:

c# - 从 Winforms 中的外部线程访问 UI

c# - 将 tabitem 转换为窗口

c# - 线程执行后调用委托(delegate)

c# - WPF:MVVM 上窗口之间的通信

c# - 为什么单击文本框会导致 AutoScroll 面板滚动回顶部?

c# - 自定义绘制下拉面板在控制范围之外

c# - 根据员工排类生成最接近的团队 C#

c# - 如何形成我的节点和树通用类

wpf自定义TabControl

c# - 列表框在选项卡更改时不突出显示选择