为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕森王 2019-10-11 14:25:24
我需要处理多个面板,其中包含各种数据掩码。每个面板应使用TreeView控件可见。这时,我通过使选定的面板可见并将其置于顶部来手动处理面板的可见性。实际上,这并不是很舒服,尤其是在UI设计器中,因为当我添加一个全新的面板时,我必须调整每个面板的大小,然后设计它。一个好的解决方案是使用TabControl,并且每个面板都包含在TabPage中。但是我找不到任何隐藏TabControl按钮的方法,因为我已经有了一个TreeView来选择项目。另一种解决方案是全统的“ StackPanelControl”,其中面板是使用堆栈排列的,但是我在任何地方都找不到它。什么是处理此类UI的最佳解决方案?
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

您需要一点点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);

  }

}


查看完整回答
反对 回复 2019-10-11
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

一个好的解决方案是使用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;


查看完整回答
反对 回复 2019-10-11
  • 2 回答
  • 0 关注
  • 315 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信