【问题标题】:Organizing WinForms controls using panels使用面板组织 WinForms 控件
【发布时间】:2011-12-09 17:08:48
【问题描述】:

我有一个 Windows 窗体应用程序,其中包含一个包含大约 30 个控件的组框。例如,假设有 15 个标签和 15 个文本框。这个分组框和其中的控件用于显示三种不同的场景:

场景 1 - 要求所有控件都可见

场景 2 - 要求标签/文本框 #1、4、11 和 14 可见,而其他标签/文本框隐藏

场景 3 - 要求标签/文本框 #3、9、11 和 13 可见,而其他标签/文本框隐藏

场景 1 显然很简单。但其他两种情况需要更多的工作。最初,我编写代码来手动显示/隐藏每个控件,如下所示:

ConfigureUIForScenario2()
{
    label1.visible = true;
    textbox1.visible = true;
    label2.visible = false;
    textbox2.visible = false;
    label3.visible = false;
    textbox3.visible = false;
    label4.visible = true;
    textbox4.visible = true;
    ...
}

这非常笨拙,似乎必须有另一种方法。我正在查看面板来组织控件,但是由于需要在场景 2 和 3 中显示/隐藏的控件通常不会彼此相邻,因此该想法产生的最好的结果是能够放置每个标签和相应的文本框进入面板并显示/隐藏面板。设置 15 个面板的可见性当然比手动设置 30 个单独的控件要少,但我想知道是否还有更好的方法?我现在正在考虑使用三个面板(每个场景一个),并且只为每个面板添加必要的控件。我想知道对于这样的布局问题是否有任何最佳实践?

【问题讨论】:

  • 你应该为你的控件命名。
  • 哦,他们被命名了,我只是为了空间和清晰而使用默认名称。

标签: winforms layout user-interface panel


【解决方案1】:

您可以为每个场景创建一个List<Control>Control[],然后循环访问列表中的控件并根据需要设置它们的Visible 属性。

【讨论】:

  • 这是个好主意。我会试试看!感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 2018-01-10
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
相关资源
最近更新 更多