Winforms - 如何显示/隐藏设计师中的元素?

时间:2012-04-03 17:52:46

标签: winforms visual-studio visual-studio-2010

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

我的问题是在设计师视图中堆叠面板。当我有2个以上的全屏面板时,它们都堆叠在一起,我看不到我之前创建的那个。这有什么解决方案吗?更改可见性不会影响设计者视图。可以把它想象成一个类似Photoshop的选项来显示/隐藏图层。我正在使用Visual C#2010 Express。

7 个答案:

答案 0 :(得分:27)

这里有几个选项:

  1. 使用Document Outline视图(View --> Other Windows --> Document Outline)选择您关注的面板。您可以右键单击它并选择Bring to Front将其放在其他所有内容之前。
  2. 虽然它可能与您正在做的事情无关,但您可以考虑使用TabControl,您可以在设计时直观地弄乱。如果您希望用户能够手动更改他们正在查看的面板,这只是一个合理的解决方案。
  3. 考虑将您的面板移动到自定义UserControl类中并单独处理它们。如果这些面板的内容和逻辑是合理的自包含,那么您可能希望这样做只是为了更好地重构您的代码。

  4. 附录:您还可以使用黑客攻击,使TabControl个标签对用户不可见。在表单上放置一个TabControl,并在运行时将ItemSize高度设置为1.这使得(几乎)用户无法自行更改选项卡,但仍允许您更改设计器中的可见选项卡。

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

    请注意,我之所以称之为 hack ,原因是:TabControl s并不是以这种方式使用的。这似乎是有用的,但是像所有黑客一样,它可能随时都会破坏,所以你应该只做它作为最后的手段(并且如果它后来导致头痛,不要责怪我......)。总之,我推荐这个hack,我只提供它作为一种可能性。

答案 1 :(得分:4)

我在Format>下使用“Bring to front”或“Send to back”为了管理这种情况,但你是对的,可见性只是运行时(AFAIK)。

干杯

答案 2 :(得分:1)

我不确定这样做的正确方法,但在这种情况下我自己做的是jyst make controls非常小,后来在程序运行中我在开始时更改了大小和位置。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

如果您使用的面板不止一个,您可以考虑将它们中的每一个放在一个单独的控件中,然后只使用应用程序表单中的控件(即在需要时以编程方式添加它们)。这样,您可以分别设计每个控件(以及每个Panel的内容),而不会显示其他Panel个。

这些建议中的每一个都会使一些UI部分更加分离,如果您获得的每个布局都与应用程序的单独部分相关联,则可能需要这些部分。使用这些建议也可以使deisgner更容易管理。

答案 5 :(得分:0)

因此,您希望能够在VS Designer视图中显示/隐藏面板(不仅仅是在实际可执行文件运行时)是否正确?

this之类的东西会有帮助吗?

如果没有,那么也许您可以尝试创建自定义用户控件而不是面板,这样您可以根据需要设置可见性属性,或者可以使用提供此类功能的WPF。点击here了解详情。

答案 6 :(得分:0)

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