C#多屏幕视图单一表单

C#多屏幕视图单一表单,c#,winforms,user-interface,show-hide,C#,Winforms,User Interface,Show Hide,我在C#中创建了一个GUI,它应该如下所示: 在主屏幕上有两个按钮,单击Button1时,我不想使用form2.show()打开新表单但在保持相同形式的同时,我想更改显示 我使用隐藏GUI元素并根据需要显示其他元素来实现这一点 它工作得很好,但在Form1的设计器视图中,我不得不创建凌乱的GUI 我的问题是,这是否是一个好的编程实践?如果没有,那么实现这一目标的最佳或推荐方法是什么 谢谢使用TabControl怎么样,您可以在不混乱的情况下获得所需的所有“视图” visible=true/fal

我在C#中创建了一个GUI,它应该如下所示:

在主屏幕上有两个按钮,单击
Button1
时,我不想使用
form2.show()打开新表单但在保持相同形式的同时,我想更改显示

我使用隐藏GUI元素并根据需要显示其他元素来实现这一点

它工作得很好,但在
Form1
的设计器视图中,我不得不创建凌乱的GUI

我的问题是,这是否是一个好的编程实践?如果没有,那么实现这一目标的最佳或推荐方法是什么


谢谢

使用TabControl怎么样,您可以在不混乱的情况下获得所需的所有“视图”
visible=
true/false
shizzle。

您可以创建不同的子控件View1和View2,并根据窗体状态和按钮单击来显示/隐藏每个控件

> P>您可能需要考虑一个“Tabess”选项卡控件,这些天我倾向于使用它们来完成我的很多工作,因为使用Win表单设计器与它们建立接口是容易和快速的。
    class TablessTabControl : 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);
        }
    }
这将扩展选项卡控件并隐藏顶部的选项卡,然后您可以使用类似于以下代码的代码以编程方式更改选项卡:

    tablessTabControl.SelectTab("tabName");

这不是我的原创作品,我发现它不久前在网上飘荡,不记得在哪里见过它。无论如何,我希望这有帮助

您是否考虑过使用选项卡控件?将提供相同/类似的功能,同时使您的设计师视图更整洁,也可以使用选项卡。您是对的。感谢快速响应,选项卡控制是选项之一,但我个人不喜欢选项卡。因此,在这种情况下,当一个人想要避免标签也。这个凌乱的设计师是不是正确的方式?或者这是最后的手段?这取决于,如果您隐藏了许多控件,您可能希望使用面板来组合控件,并使这些控件可见/不可见。但是有很多方法可以做到这一点。如果它像1-2个控件,那么你的方式真的是一条路要走,如果不是的话,你真的有很多方法可以做到。谢谢,如果有许多控件需要在每个不同的视图中显示/隐藏,我想我需要使用选项卡/面板。但现在,我可以用它了。感谢您的建议,但这些视图将再次在同一表单设计器视图中重叠,看起来会很混乱。不是吗?我不明白你为什么对设计师的观点如此担心。然而,解决“混乱”问题的办法是一个接一个地添加这些控件,因此表单看起来很长。当你决定显示/隐藏控件时,你也可以设置它们的顶部和左侧位置,以便它们正确显示。嗯,到目前为止,我所做的只是一项工作,我并不担心我想知道这方面的最佳实践。万一以后有人需要编写我的代码,如果我这样离开设计师,他会“表扬”我。但我想尝试一下你刚才提到的方法。我不知道最佳实践,但一个好的实践是封装。最好将相关的基本控件组合到一个用户控件中,这样就可以在较小的代码段上使用show hide。正如其他海报所提到的,选项卡控件、面板等是不同的分组选项,您应该进一步探索。您是对的,非常感谢您的建议,至少你们给了我更多的设计空间,并根据需要考虑不同的布局。谢谢大家谢谢,这似乎更接近我要找的。我会尝试一下,进一步讨论或评论。嗨,我在项目中添加了这个类,但它没有隐藏tabControls。是否需要添加更多内容?@user1809095是的,您需要确保在winforms应用程序中创建TablessTabControl。如果查看Visual Studio中的“工具箱”菜单,您应该会注意到一个部分,该部分的项目名称后跟组件,例如WindowsFormApplication2组件。只需将TablessTabControl从工具箱拖放到windows窗体上,就像通常使用常规选项卡控件一样。在这里,您可以像管理常规选项卡控件一样管理它。再次感谢,我正在查看工具箱,但没有找到TablessTabControl,因为我使用的是MS Visual C#2010。我应该下载Visual studio并尝试您的方式。非常感谢。我将Visual Studio Express 2010与C#一起使用,它的显示对我来说没有问题。另一个选项是将常规选项卡控件拖放到窗体上,然后在解决方案资源管理器中用旁边的+图标展开窗体。右键单击.Designer.cs。在您的情况下,它应该是Form2.Designer.cs和视图代码。在源代码中搜索选项卡控件声明-类似于
this.myTabControl=new System.Forms.TabControl()
并将其更改为
this.myTabControl=new tableStabControl()