在多个选项卡页面上重复使用控件(即文本框)
本文关键字:控件 文本 选项 | 更新日期: 2023-09-27 18:22:37
我有一个C#WinForm程序,它本质上是一个美化的文本解析器。它取一行十六进制,并根据提供给我的规范将其转换为人类可读的信息。我有一个选项卡控件,其中有几个选项卡页面用于显示信息。这些选项卡中有几个是相同的,但需要根据解析出的文本行位于不同的选项卡上,如果该行为"A"类型,则会在选项卡"A"上显示信息,如果为"B"类型,将在选项卡"B"上显示信息,依此类推
我开始注意到的问题是,我在所有这些选项卡页面上都有相当多的文本框和其他控件,我相信这会对性能产生一些影响。我相信我现在有150多个文本框,大约相同的复选框等等。
我的问题是,有没有一种方法可以在多个选项卡页面上重用一页控件,并让它们根据选项卡显示不同的信息,这样我就可以减少100个控件,简化程序本身?
阅读添加的部分以获得更清晰的内容,正如我所说的那样。
有几种方法可以从体系结构上解决这个问题。基本概念是停止将"标签页"视为一个物理概念,开始从逻辑上思考它。作为一个逻辑概念,在您的实现中,选项卡页是一组控件,其中一些控件是唯一的,另一些控件是通用的(或多个选项卡通用)。
在一个纯粹的动态系统中,您填写"控件"并根据用户单击的"选项卡"动态绘制。这意味着您实际上不需要使用选项卡控件。相反,您根据应该向用户显示的信息来绘制"选项卡页"。
另一种选择是将唯一的"控件"保留在"选项卡页面"上,并保留可以添加到非唯一控件中的容器。这需要一些计划来确定哪些控件需要显示在哪个页面上,以及静态(放置在选项卡上的控件)和动态的布局如何交织。换句话说,一点计划可以帮你省去很多悲伤。
无论哪种方式,您都希望填充一次单个控件,无论它在多少个"选项卡页"上使用。
补充道:由于这是winforms,你必须稍微改变一下你的思维模式。如果你是一个webforms开发人员,你已经从容器的角度进行了思考。
一个选项是选项卡的策略模式。该策略包含绘制"选项卡页面"所需的控件以及它们在页面上的位置和大小。当一个人点击一个选项卡时,你会进入"控制桶",并根据使用的"选项卡"(策略)动态添加。您甚至可以将选项卡页面传递给策略,并在那里动态绘制它。
整个答案的要点是做一次工作,然后根据需要进行显示。
我不认为你可以重用这样的控件,但你肯定可以在第一次显示选项卡时创建控件,而不是一次全部创建。