Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在tabControls tabPage中更改和传递内容_C#_.net_View - Fatal编程技术网

C# 在tabControls tabPage中更改和传递内容

C# 在tabControls tabPage中更改和传递内容,c#,.net,view,C#,.net,View,我在windows窗体应用程序中工作,遇到以下问题。我在应用程序中使用tabControl,当用户执行特定操作时,需要更改某些TabPage中的内容 例如,tabPage one包含一个文本区域和一个按钮,当用户单击按钮时,文本区域内的信息应以某种方式存储,并且同一个tabPage应显示新内容,例如更多文本区域、按钮等,我认为使用其中的视图更容易做到,因此,一个视图可以隐藏,另一个视图可以显示。这在某种程度上是一个品味问题。您可以选择在方法中逐个显示和隐藏控件,也可以在UserControl中对

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


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

这在某种程度上是一个品味问题。您可以选择在方法中逐个显示和隐藏控件,也可以在UserControl中对控件进行分组,然后在一个命令中显示或隐藏这些控件

我会根据以下问题做出决定:

  • 是否有始终可见的控件,以及这些控件的布局如何

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

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

最后一个问题可能会有很大的不同:如果你想重复使用,一定要使用
UserControl
。它基本上就是为了做到这一点:组控件,就像表单一样

imo说,只需几个控件(在switchViewMode方法中)就足够了

要添加UCs,请在项目浏览器中右键单击项目,然后选择
add-usercontrol
。然后选择一个好名字,比如UC_商品或UC_服务或你的商店政策建议的任何东西

然后,您将看到空GUI。现在添加所需的控件

这里需要做出一个决定:如果您要重用它,请确保控件具有通用名称!如果不是,也没关系。原因是,当您添加同一UC的两个实例时,它们的控件将具有相同的名称,并且必须由父级(UC)对它们进行限定

这里您还可以编写事件等脚本

最后,根据需要将实例添加到选项卡页,如下所示:

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\u goodsDelivered.Status


这是WinForms吗?Wrt术语:一个
选项卡控件
包含
选项卡页
。它们可以作为您的视图,即包含您需要的所有元素,也可以包含一个
UserControl
,该控件将作为(可重用的)容器。据我所知,没有办法使选项卡页不可见。我也不推荐它,因为它很可能会让用户感到困惑。@TaW我稍微改变了我的问题,以使用合适的术语。我不想让tabPage不可见,但是说它里面的元素,也许是tabPage里面的视图?此外,我可以看出用户可能会感到困惑,但使用tabControl对我来说是一项要求。我知道,基于您的问题,UserControl听起来是我的最佳解决方案。你能提供一个快速使用的例子吗?我在谷歌上搜索过,但所有的演练似乎都是针对基于web的asp.net应用程序的,也许你可以链接一个有用的资源来解释如何使用它?