我正在使用Windows窗体应用程序并遇到以下问题。我在我的应用程序中使用tabControl,当用户执行特定操作时,需要更改某些tabPages中的内容。
例如tabPage one包含文本区域和按钮,当用户点击文本区域内的按钮信息时,应以某种方式存储,并且相同的tabPage应显示新的内容,例如更多的文本区域,按钮等,我认为通过使用其中的视图更容易,因此可以隐藏一个视图,可以显示另一个视图。
答案 0 :(得分:1)
这在某种程度上是一种品味问题。您可以选择在方法中逐个显示和隐藏控件,也可以将它们分组到UserControl中,然后在一个命令中显示或隐藏它们。
我会根据这些问题以这样或那样的方式做出决定:
是否有控件,这些控件始终可见,这些控件的布局如何?
要显示/隐藏多少个控件?
是否需要重复使用您的一个或多个观点?
最后一个问题可能会产生重大影响:如果您想重复使用,请转到UserControl
。它基本上就是这样做的:组控件,就像表单一样。
对于只有少数几个控件(在switchViewMode方法中)执行它就足够了,imo。
要添加UC,请右键单击项目资源管理器中的项目,然后选择add - usercontrol
。然后选择漂亮的名字,例如UC_Goods或UC_Services或商店政策建议的任何内容。
然后会显示空GUI。现在添加您需要的控件。
这里要做出决定:如果你将重复使用它,请确保控件获得通用名称!如果不是,那没关系。原因是,当您添加同一个UC的两个实例时,它们的控件将具有相同的名称,您必须通过父级(UC)来限定它们
在这里,您还可以编写事件等脚本。
最后根据需要将实例添加到TabPage中:
public UC_Goods uc_goodsDelivered = new UC_Goods();
public UC_Goods uc_goodsOnHold = new UC_Goods();
public UC_Services uc_ItServices = new UC_Services ();
public Form1()
{
InitializeComponent();
tab.tp_goodsPage.Controls.Add(uc_goodsDelivered);
tab.tp_goodsPage.Controls.Add(uc_goodsOnHold);
goodsOnHold.Hide();
tab.tp_goodsPage.Controls.Add(uc_ItServices);
uc_ItServices .Hide();
// take care of dock style or anchors..
// ..and initialzing fields..
}
这个delclares分别是两个UC类和两个实例。只有一个可见。由于一个类被使用了两次,因此它的控件具有不明确的名称,直到您对其进行限定为止像这样:uc_goodsDelivered.Status
......
HTH