【问题标题】:Changing and passing content inside tabControls tabPage在 tabControls tabPage 中更改和传递内容
【发布时间】:2016-06-12 14:57:13
【问题描述】:

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

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

【问题讨论】:

  • 这是 WinForms 吗? Wrt 术语:Tab Control 包含 TabPages。这些可以充当您的视图,即包含您需要的所有元素,也可以包含UserControl,然后将充当(可重用)容器。没有办法(据我所知)使 TabPage 不可见。我也不推荐它,因为它很可能会让用户感到困惑..
  • @TaW 我稍微改变了我的问题以使用正确的术语。我不想让tabPage 不可见,但是说它里面的元素,也许是tabPage 里面的一个视图?此外,我可以看到用户会感到困惑,但使用 tabControl 是我的要求。

标签: c# .net view


【解决方案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..
}

这分别声明了两个 UC 类和两个和一个实例。只有一个是可见的。由于一个类被使用了两次,因此它的控件具有模棱两可的名称,直到您对其进行限定,例如像这样:uc_goodsDelivered.Status...

【讨论】:

  • 我明白了,根据您的问题,UserControl 听起来对我来说是一个最佳解决方案。您能否提供一个快速使用示例,我在 Google 上搜索过,但所有演练似乎都是针对基于 Web 的 asp.net 应用程序,也许您可​​以链接一个有用的资源来解释如何使用它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多