我有一个程序可以加载一个包含大约332个文本框的标签。加载新选项卡时,在显示选项卡之前有2-3秒的延迟。我试图暂停和恢复甚至查看线程,但发现winform只能使用一个线程。
我想知道是否有办法在另一个线程中创建文本框,然后将它们添加到主窗体中,或者更好地创建332个文本框。
感谢您的帮助。
答案 0 :(得分:3)
根据您的布局,我强烈建议您使用DataGridView替换文本框,或者使用某种连续控件在滚动时加载文本框。 主瓶颈是手柄的创造。在winforms中,每个控件都有自己的句柄(甚至是标签),当大量使用这样的控件时,确实会出现性能问题。
如果数据网格视图不是一个选项,你能否提供一些关于布局的更多信息(可能是截图?),所以社区可以选择其他方式。当您尝试添加文本框时,在另一个线程中创建文本框会产生问题,但您只能在需要时创建它们。
答案 1 :(得分:1)
简单:不要使用300个文本框。您一次只能使用一个文本框。您可以绘制的其余数据,以及当用户想要编辑它时,您可以为其创建编辑控件。这正是网格的工作原理,因此我建议使用网格或类似控件。
答案 2 :(得分:0)
我也遇到了这个问题,它进一步影响了之前未激活的选项卡上的控件的初始化代码。
我的解决方法是使用“loading ...”启动来阻止程序,并以编程方式单击选项卡,以便控件加载/激活。完成此操作后,标签页不会再花费很长时间再显示。
虽然我同意其他人的观点,但您可能希望在单个标签页中减少控件数量。