繁体   English   中英

在tabControls tabPage中更改和传递内容

[英]Changing and passing content inside tabControls tabPage

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

例如,tabPage包含一个文本区域和一个按钮,当用户单击文本区域内的按钮信息时,应该以某种方式存储它,而同一tabPage应该显示新内容,例如更多的文本区域,按钮等,我认为这样做比较容易使用其中的视图,因此可以隐藏一个视图,而可以显示另一个视图。

这在某种程度上与口味有关。 您可以选择一种方法显示或隐藏控件,也可以将它们分组到一个UserControl中,然后在一个命令中显示或隐藏。

我会根据以下问题以一种或其他方式做出决定:

  • 是否存在将始终可见的控件,这些控件的布局如何?

  • 有多少个控件可以显示/隐藏?

  • 是否需要重用您的一个或多个视图?

最后一个问题可能会带来很大的不同:如果要重复使用,请使用UserControl 基本上就是这样做:组控件,就像表单一样。

对于仅几个控件(在switchViewMode方法中)一个接一个地做到这一点,imo。

要添加UC,请在project-explorer中右键单击您的项目,然后选择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 ...

心连心

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM