在tabControls tabPage中更改和传递内容

我在Windows窗体应用程序中工作,并有以下问题。 我在我的应用程序中使用tabControl,当用户执行特定操作时,需要更改某些tabPages中的内容。

例如tabPage one包含一个文本区域和一个按钮,当用户点击文本区域内的按钮信息时应该以某种方式存储,并且相同的tabPage应该显示新的内容,例如更多的文本区域,按钮等,我认为它更容易通过使用其中的视图,可以隐藏一个视图,也可以显示另一个视图。

这在某种程度上是一种品味问题。 您可以选择在方法中逐个显示和隐藏控件,也可以将它们分组到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.. } 

这将分别宣布两个UC类和两个以及一个实例。 只有一个可见。 由于一个类被使用了两次,因此它的控件具有不明确的名称,直到你符合它们为止:例如: uc_goodsDelivered.Status

心连心