1

我有一个程序可以加载一个选项卡,该选项卡加载了大约 332 个文本框。加载新标签时,在显示标签之前有 2-3 秒的延迟。我曾尝试暂停和恢复,甚至研究线程,但发现 winform 只能使用一个线程。

我想知道是否有一种方法可以在另一个线程中创建文本框,然后将它们添加到主窗体中,或者有一种方法可以更好地创建 332 个文本框。

谢谢你的帮助。

4

3 回答 3

3

根据您的布局,我强烈建议用 DataGridView 替换文本框,或者使用某种 continous-control 在滚动时加载文本框。主要瓶颈是手柄的创建。在 winforms 中,每个控件都有自己的句柄(甚至是标签),并且当像这样大量使用时,确实会产生性能问题。

如果 datagridview 不是一个选项,您能否提供有关布局的更多信息(也许是屏幕截图?),以便社区可以尝试替代方案。当您尝试添加它们时,在另一个线程中创建文本框会产生问题,但您只能在需要时创建它们。

于 2012-07-02T08:43:38.330 回答
1

很简单:不要使用 300 个文本框。您一次只能使用一个文本框。剩下的数据你可以画出来,当用户想要编辑它时,你可以为它创建编辑控件。这正是网格的工作原理,因此我建议使用网格或类似控件。

于 2012-07-02T08:46:55.483 回答
0

我也遇到了这个问题,它进一步影响了之前未激活的选项卡上控件的初始化代码。

我的解决方法是使用“正在加载...”启动画面来阻止程序,并以编程方式单击选项卡,以便加载/激活控件。完成此操作后,标签页不应花费很长时间才能再次显示。

尽管我同意其他人的观点,您可能希望考虑减少单个选项卡中的控件数量。

于 2012-07-02T08:45:04.627 回答