Winforms-如何在设计器中显示/隐藏元素?

Winforms-如何在设计器中显示/隐藏元素?,winforms,visual-studio,visual-studio-2010,Winforms,Visual Studio,Visual Studio 2010,我正在尝试使用winforms创建一个多页应用程序。我决定使用多个面板——每个面板代表不同的页面,所以当我需要显示不同的内容时,我可以在它们之间切换 我的问题是在designer视图中堆叠面板。当我有2+个全屏面板时,它们彼此堆叠,我看不到我之前创建的那个。有什么解决办法吗?更改可见性不会影响设计器视图。可以将其视为类似photoshop的显示/隐藏图层的选项。我使用的是Visual C#2010 Express。在这种情况下,我使用的一种方法是使用“文档资源管理器”窗口将我正在处理的面板带到前

我正在尝试使用winforms创建一个多页应用程序。我决定使用多个面板——每个面板代表不同的页面,所以当我需要显示不同的内容时,我可以在它们之间切换


我的问题是在designer视图中堆叠面板。当我有2+个全屏面板时,它们彼此堆叠,我看不到我之前创建的那个。有什么解决办法吗?更改可见性不会影响设计器视图。可以将其视为类似photoshop的显示/隐藏图层的选项。我使用的是Visual C#2010 Express。

在这种情况下,我使用的一种方法是使用“文档资源管理器”窗口将我正在处理的面板带到前面。

我不确定这样做的正确方法,但我自己在这种情况下所做的是使控件非常小,然后在程序运行时,我会在开始时更改它们的大小和位置。

我在Format>下使用“带到前面”或“发送到后面”来管理这种场景,但你是对的,可见性只是运行时(AFAIK)有点糟糕


欢呼@

如果你可以接受,考虑使用<代码> TabManue控件,并将“<代码>面板< <代码>控件”放在一个不同的选项卡中。然后,您可以通过在选项卡之间切换或通过编程方式删除并向控件添加适当的选项卡来隐藏和显示正确的页面

还可以考虑使用两个不同布局的窗口,并显示它们之间的切换。

如果您使用的不仅仅是几个面板,您可以考虑将它们中的每一个放在单独的控件中,然后只使用应用程序窗体中的控件(即在需要时以编程方式添加它们)。通过这种方式,您可以分别设计每个控件(因此每个

面板的内容),而不显示其他
面板的内容

这些建议中的每一个都会使一些UI部分更加分离,如果您得到的每个布局都与应用程序的一个单独部分相关联,那么这是需要的。使用这些建议还可以更轻松地使用deisgner进行管理。

这里有几个选项:

  • 使用
    文档大纲
    视图(
    视图-->其他窗口-->文档大纲
    )选择您关心的面板。您可以右键单击它,然后选择“将其置于前面”
  • ,将其置于其他所有内容的前面 虽然它可能与你所做的不相关,但你可以考虑使用 TabMeult,在设计时你可以在视觉上与之混淆。如果您希望用户能够手动更改他们正在查看的面板,那么这是唯一合理的解决方案
  • 考虑将面板移动到自定义
    UserControl
    类中,并分别处理它们。如果这些面板的内容和逻辑是合理的自包含的,那么您可能希望这样做只是为了更好地重构代码

  • 附录:您还可以使用一种使
    选项卡控件
    的选项卡对用户不可见的方法。在表单上放置一个
    TabControl
    ,并在运行时将
    ItemSize
    height设置为1。这使得用户(几乎)不可能自己更改选项卡,但仍然允许您在设计器中更改可见选项卡

    myTabControl.ItemSize = new Size(myTabControl.ItemSize.Width, 1);
    

    请注意,我之所以称之为hack是因为:
    TabControl
    s不应该这样使用。这似乎是可行的,但就像所有的黑客一样,它可能会在任何时候崩溃,所以你只能作为最后的手段来做(如果以后它会引起头痛,不要怪我…)。简而言之,我不推荐这种攻击,我只是提供了一种可能性。

    所以你想在VS Designer视图中显示/隐藏你的面板(而不仅仅是在实际可执行文件运行时),对吗

    需要帮忙吗


    如果没有,那么您可以尝试创建自定义用户控件,而不是面板,这样您就可以根据自己的喜好设置可见性属性,或者可以使用提供这种功能的WPF。点击查看更多信息。

    试试这个。richTextBox1.Visible=false;在Form1.cs中(假设您试图隐藏一个默认名称为“richTextBox1”的富文本框)

    如果您想选择另一个
    面板
    ,您可以从下拉列表中选择它。另一个解决方案是使它们变小或移动到某个地方,并根据需要程序调整它们的大小和位置,或者考虑使用<代码> TabControl < /Cord>控件。我决定使用“前向/发送到后退”选项,因为这是目前最简单的解决方案,并且不涉及更改应用程序结构(Tab控件)。. 不幸的是,我找不到视图->其他窗口->文档大纲,所以我必须在所有面板上使用“返回发送”,直到找到我要查找的那个。