2012-02-08 61 views
0

我有一个主窗体,我想通过按下一些按钮来动态更改它的内容。 比方说,我有一个按钮“新用户”和“登录”,如果我按新用户,我不想新的表单+显示,我希望新用户的所有标签和按钮显示在右侧主要形式。如果我按登录,主窗体内容更改为一些标签和文本框? 这仅仅是一个例子。 我现在所能做的只是通过.Show()命令创建新表单并将其显示给用户。如何更改表单内容?

+0

请澄清哪个VB版本(VB6,VB.NET)并相应标记 - 标记'basic'不会给你许多好的答案。 – Filburt 2012-02-08 12:11:22

回答

2

比方说,你有客户,产品和供应商“窗口”。您不想与它们分离窗口,因此您可以将所有控件分组到groupboxes中,并根据用户操作使其可见/不可见。这会起作用,但会导致代码可读性和可维护性的问题:您为窗口内的许多控件编写了大量代码,毕竟只有一个类。

所以你可以这样做:创建一个名为usrCustomer或myCustomer的用户控件或者其他东西,并粘贴到与Customer有关的所有控件:groupbox,labels,combos,everything。然后,您可以决定是否要在设计时将这个超级控件添加到主窗体中,或者如果您希望在每次需要时在运行时创建它的新实例。如果将来你必须修改某些东西,你将会去一个单独的类(ctlCostumer),而不是在怪物主表单类中挖掘。

CAVEAT:如果这些控件在它们之间共享信息(如果产品超级控件需要知道客户超级控件中的某些内容)并将该信息公开给公共属性等,则必须小心。

+0

非常感谢,我的朋友。 – Devfly 2012-02-08 13:23:56

0

从设计的角度来看,制作新的表格会好很多。 或者,您可以创建一些新的控件并隐藏/显示控件。 (或使可见光属性为真/假)

标签具有文本属性,您可以更改运行时间。

+0

这不能回答我的问题。我有很多按钮文本框和标签。如果我显示/隐藏它们将会很糟糕。我敢肯定,有很多方案都有。 – Devfly 2012-02-08 12:13:39

+0

创建不同的父面板。在面板上放置不同的控制组。显示/隐藏面板? – 2012-02-08 15:00:19

+0

从可维护性/可读性。将控件分成逻辑集。每一组都可以指示你的程序的不同状态.. – 2012-02-08 15:02:40

0

如果您不想显示新表单,可以将与用户相关的所有控件(标签,文本框....)包装在容器中,例如simple Panel,然后隐藏/显示面板取决于你的表单状态。

+0

是的,我想到了。会尝试! – Devfly 2012-02-08 12:49:03