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

Kam*_* N. 24 visual-studio-2010 visual-studio winforms

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

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

ean*_*533 29

这里有几个选项:

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

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

myTabControl.ItemSize = new Size(myTabControl.ItemSize.Width, 1);
Run Code Online (Sandbox Code Playgroud)

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


Luc*_*rin 5

我使用“格式”>“命令”下的“移至最前”或“发送至后”来管理这种情况,但是您是对的,可见性只是运行时(AFAIK),实在令人遗憾。

干杯