在tabControls tabPage中更改和传递内容

时间:2014-04-23 09:40:35

标签: c# .net view

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

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

1 个答案:

答案 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