我有一个主要表单,我想通过按一些按钮动态更改它的内容。
假设我有一个按钮“新用户”和“登录”,如果我按新用户,我不想创建新表单+显示,我希望新用户的所有标签和按钮都显示在主要形成。如果我按登录,主表单内容将更改为一些标签和文本框?
这仅仅是例如。
我现在所能做的只是创建新表单并通过.Show()
命令向用户显示。
答案 0 :(得分:2)
假设您拥有客户,产品和供应商“窗口”。您不希望从它们创建单独的窗口,因此您可以将所有控件组合在组框中,并根据用户操作使它们可见/不可见。这会有效,但它会导致代码可读性和可维护性的问题:你为窗口内的很多控件编写了很多代码,毕竟只是一个类。
所以你可以这样做:创建一个名为usrCustomer或myCustomer或其他的用户控件,并将与客户相关的所有控件粘贴到其中:组框,标签,组合,一切。然后,您可以决定是否要在设计时将此大型控件添加到主窗体中,或者是否要在每次需要时在运行时创建它的新实例。如果将来你必须修改某些东西,你将转到一个单独的类(ctlCostumer),而不是必须在怪物主表格类中挖掘。
CAVEAT:如果这些控件在它们之间共享信息,你必须要小心,(如果产品mega-control需要知道来自Customer mega-control的东西)并用公共属性公开这些信息等。
答案 1 :(得分:0)
从设计角度来看,制作新表格要好得多。 或者,您可以创建一些新控件并隐藏/显示控件。 (或使visibile属性为true / false)
Label有一个text属性,您可以更改运行时间。
答案 2 :(得分:0)
如果您不想显示新表单,可以将与用户相关的所有控件(标签,文本框....)包装在容器中,例如simple Panel,然后隐藏/根据您的表单状态显示面板。