使用多个面板设计Windows.Form - >如何隐藏一个面板(如PS层)

Non*_*biz 4 panel layer visual-studio-2008 windows-forms-designer winforms

如何在Visual Studio 2008表单设计器中隐藏一个面板,如PS中的图层?否则,有人可以推荐另一种更好的方法来设计必须由用户点击的多个"屏幕"吗?

Jef*_*eff 18

你描述的是一个向导,你可能想要研究Eric J.的方法.

但是,当我想要在我的UI中的同一空间中有多个面板并且我想在设计器中在它们之间切换的情况下,我喜欢使用TabControl并隐藏TabControl上的选项卡.这使得UI在设计时更容易管理,并且在运行时在标签之间切换代码非常简单.

我创建了一个自定义控件,它源自TabControl,名为HiddenTabsControl,非常简单.该类仅覆盖WndProc并让TabControl基类处理其他所有内容.你需要做的就是:

  • 在项目中添加新项
  • 选择自定义控制,
  • 将其命名为HiddenTabsControl.
  • 将基类更改为TabControl,删除构造函数和Visual Studio添加的OnPaint覆盖.
  • 将WndProc的覆盖复制到类中:

    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);
        }
    }  
    
    Run Code Online (Sandbox Code Playgroud)

现在,您可以更改设计器中的选项卡并轻松设计UI,并在代码中处理事件以根据需要更改选项卡.更改Selected选项卡很容易完成:

this.hiddenTabsControl.SelectedTab = this.tabPageYouWantVisible;
Run Code Online (Sandbox Code Playgroud)

移除标签的一个副作用是在构造控件时标签占据的空间.删除它们会使HiddenTabsControl占用的空间通过缩小来改变.我通常将HiddenTabsControl的Anchor设置为bottom以防止收缩.