在C#中更改表单布局

时间:2010-11-18 15:16:17

标签: c# winforms layout

我正在制作一个程序,要求用户选择他/她希望打开的文件。

他们可以选择大约3个不同的文件,每个文件都会影响按钮的布局,以及它们的一些属性。

问题是,目前我有这个巨大的清单:

label1.Visible = false;
label2.Visible = false;
form.size = etc.

每个文件影响大约16个不同的控件,因此总共有48个可能的更改。

是否有更快/更好的方法来整理程序布局?

提前谢谢。

框架:3.5 语言:C#

Windows窗体应用程序

4 个答案:

答案 0 :(得分:5)

我建议将它们分组到Panels中,然后切换Panel上的可见性。

答案 1 :(得分:2)

如果您使用WPF构建应用程序,则可以使用Visual State Manager定义窗口的自定义状态,并根据状态设置控件的可见性。或者,您可以将控件上的visibility属性绑定到ViewModel上的属性。

为了将来参考,C#是语言;您需要指定您正在为您的应用程序使用的框架。

答案 2 :(得分:1)

Brandon建议使用面板进行分组,如果您的16个控件放在一个矩形区域中,这可能是一个合理的解决方案。另一种形式的分组可以通过给一组控件提供合理的名称并在运行时通过其名称访问它们来实现。

我假设您使用的是Windows窗体。例如,而不是像这样的16行代码

label_1_1.Visible = false;
label_1_2.Visible = false;
//...
label_1_16.Visible = false;

您将此功能添加到表单

Control FindControl(string name)
{
    foreach (Control c in this.Controls)
    {
         if (c.Name == name)
         {
              return c;
         }
     }
     return null;
 }

并以这种方式使用它:

 for(int i=1;i<=16++i)
     ((Label)FindControl("label_1_" + i)).Visible=false;

(当然,你应该添加一些错误检查)

答案 3 :(得分:0)

我将每个布局放在自己的占位符控件中(将所有布局设置为在标记中不可见)并添加一些逻辑以显示所需的布局。

(假设你在谈论网络表格)。