在多个标签页中重复使用控件(即文本框)

时间:2012-02-06 18:20:18

标签: c# winforms

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

我开始注意到的问题是,我有相当多的文本框和其他控件跨越所有这些标签页,我相信它会影响性能。我相信我现在有150多个文本框,大约相同的复选框等。

我的问题是,有没有办法在多个标签页上重复使用一页控件并让它们根据标签显示不同的信息,那么我是否可以减少100个控件并简化程序本身?

2 个答案:

答案 0 :(得分:1)

向下阅读添加的部分,以便更加清晰,因为我有点絮絮叨叨。

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

在纯动态系统中,您可以填写“控件”并根据用户点击的“标签”动态绘制。这意味着您不需要使用选项卡控件。而是根据应向用户显示的信息绘制“标签页”。

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

无论哪种方式,无论使用多少“标签页”,您都希望填充一次控件。

补充:由于这是winforms,你必须稍微改变你的思维范式。如果您是一名webforms开发人员,那么您已经考虑过容器了。

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

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

答案 1 :(得分:0)

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