C# 跨多个选项卡页重复使用控件(即文本框)

C# 跨多个选项卡页重复使用控件(即文本框),c#,winforms,C#,Winforms,我有一个C#WinForm程序,它本质上是一个美化的文本解析器。它使用一行十六进制,并根据向我提供的规范将其转换为人类可读的信息。我有一个tabcontrol,其中有几个用于显示信息的选项卡页。这些选项卡页面中有几个是相同的,但根据解析出的文本行,需要位于不同的选项卡上。如果行的类型为“A”,则在选项卡“A”上显示信息;如果行的类型为“B”,则在选项卡“B”上显示信息,依此类推 我开始注意到的问题是,我在所有这些选项卡页面上都有相当多的文本框和其他控件,我相信这会稍微影响性能。我相信我现在有15

我有一个C#WinForm程序,它本质上是一个美化的文本解析器。它使用一行十六进制,并根据向我提供的规范将其转换为人类可读的信息。我有一个tabcontrol,其中有几个用于显示信息的选项卡页。这些选项卡页面中有几个是相同的,但根据解析出的文本行,需要位于不同的选项卡上。如果行的类型为“A”,则在选项卡“A”上显示信息;如果行的类型为“B”,则在选项卡“B”上显示信息,依此类推

我开始注意到的问题是,我在所有这些选项卡页面上都有相当多的文本框和其他控件,我相信这会稍微影响性能。我相信我现在有150多个文本框,大约相同的复选框等等


我的问题是,有没有一种方法可以在多个选项卡页面上重复使用一页控件,并让它们根据选项卡显示不同的信息,这样也许我可以减少我的100个控件并简化程序本身?

我认为你不能重复使用这样的控件,但是,您可以在第一次显示选项卡时创建控件,而不是一次创建所有控件。

我不认为您可以重复使用这样的控件,但您可以在第一次显示选项卡时创建控件,而不是一次创建所有控件。

在我漫谈的时候,请阅读添加的部分以获得更清晰的信息

有几种方法可以从架构上解决这个问题。基本概念是停止将“标签页”作为一个物理概念来思考,开始逻辑地思考它。作为一个逻辑概念,在您的实现中,选项卡页面是一组控件,其中一些控件是唯一的,而一些控件是公用的(或多个选项卡共用)

在一个纯粹的动态系统中,您可以根据用户单击的“选项卡”来填充“控件”并动态绘制。这意味着您实际上不需要使用选项卡控件。而是根据应该向用户显示的信息绘制“选项卡页面”

另一种选择是将唯一的“控件”保留在“选项卡页”上,并保留可以添加到非唯一控件中的容器。这需要一些计划来确定哪些控件需要显示在哪个页面上,以及静态(放置在选项卡上的控件)和动态的布局如何相互交织。换句话说,一点计划可以帮你省去很多悲伤

无论哪种方式,您都希望只填充一个控件一次,不管它在多少个“选项卡页”上使用

补充:由于这是winforms,您必须稍微改变一下您的思维模式。如果您是一名webforms开发人员,您可能已经在考虑容器了

一个选项是选项卡的策略模式。该策略包含绘制“选项卡页面”所需的控件及其在页面上的位置和大小。当一个人点击一个标签时,你进入“bucket o controls”,并根据使用的“tab”(策略)动态添加。您甚至可以将选项卡页面传递到策略,并在那里动态绘制它


整个答案的要点是只做一次工作,然后根据需要显示。

阅读添加的部分,以获得更清晰的信息,因为我有点漫无边际

有几种方法可以从架构上解决这个问题。基本概念是停止将“标签页”作为一个物理概念来思考,开始逻辑地思考它。作为一个逻辑概念,在您的实现中,选项卡页面是一组控件,其中一些控件是唯一的,而一些控件是公用的(或多个选项卡共用)

在一个纯粹的动态系统中,您可以根据用户单击的“选项卡”来填充“控件”并动态绘制。这意味着您实际上不需要使用选项卡控件。而是根据应该向用户显示的信息绘制“选项卡页面”

另一种选择是将唯一的“控件”保留在“选项卡页”上,并保留可以添加到非唯一控件中的容器。这需要一些计划来确定哪些控件需要显示在哪个页面上,以及静态(放置在选项卡上的控件)和动态的布局如何相互交织。换句话说,一点计划可以帮你省去很多悲伤

无论哪种方式,您都希望只填充一个控件一次,不管它在多少个“选项卡页”上使用

补充:由于这是winforms,您必须稍微改变一下您的思维模式。如果您是一名webforms开发人员,您可能已经在考虑容器了

一个选项是选项卡的策略模式。该策略包含绘制“选项卡页面”所需的控件及其在页面上的位置和大小。当一个人点击一个标签时,你进入“bucket o controls”,并根据使用的“tab”(策略)动态添加。您甚至可以将选项卡页面传递到策略,并在那里动态绘制它


整个答案的要点是只做一次工作,然后根据需要显示。

控件最终是一个类(一个对象),因此您可以控制如何使用它以及如何向用户显示它。在选项卡页面的约束范围内,这有点困难,但您可以动态地将控件添加到页面(邋遢)或其他类型的容器(整洁,如面板、选项卡页面等)。WinForms使这一点更为棘手,因为一般WinForms开发人员不像web开发人员那样思考。:-)控件最终是一个类(对象),因此您可以控制如何使用它以及如何向用户显示它。在选项卡页面的约束范围内,这有点困难,但您可以动态地将控件添加到页面(邋遢)或其他类型的容器(整洁,如面板、选项卡页面等)。WinForms使这一点更为棘手,因为一般WinForms开发人员不像web开发人员那样思考。:-)我感谢你的意见。非常感谢。我感谢你的意见。非常感谢。