我有一个加载选项卡的程序,它加载了大约332个文本框。加载新选项卡时,在显示该选项卡之前会有2-3秒的延迟。我尝试过挂起和恢复,甚至查看了线程,但发现winform只能使用一个线程。
我想知道是否有一种方法可以在另一个线程中创建文本框,然后将它们添加到主窗体中,或者有一种方法可以更好地创建332个文本框。
谢谢你的帮助。
发布于 2012-07-02 16:43:38
根据您的布局,我强烈建议您用DataGridView替换textboxes,或者使用某种连续控件将textboxes加载到滚动上。主要的瓶颈是手柄的创建。在winforms中,每个控件都有自己的句柄(甚至标签),当大量使用这样的句柄时,确实会带来性能问题。
如果datagridview不是一个选项,你能提供更多关于布局的信息(也许是屏幕截图?),这样社区就可以尝试一下替代方案。在另一个线程中创建文本框会在您尝试添加它们时产生问题,但您可以仅在需要时创建它们。
发布于 2012-07-02 16:46:55
简单:不要使用300个文本框。一次只能使用一个文本框。您可以只绘制其余的数据,当用户想要编辑它时,您可以为它创建编辑控件。这正是网格的工作方式,所以我建议使用网格或类似的控件。
发布于 2012-07-02 16:45:05
我也遇到了这个问题,它进一步影响了选项卡上以前没有激活的控件的初始化代码。
我的变通方法是使用“加载...”来阻止程序。启动并以编程方式单击选项卡,以便加载/激活控件。完成此操作后,选项卡页将不再需要花费那么长时间才能再次显示。
尽管我同意其他人的观点,您可能希望减少单个选项卡中的控件数量。
https://stackoverflow.com/questions/11290263
复制相似问题