C# winforms的优化

C# winforms的优化,c#,winforms,optimization,C#,Winforms,Optimization,我有一个程序加载一个选项卡,它加载了大约332个文本框。加载新选项卡时,有2-3秒的延迟才能显示该选项卡。我尝试过暂停和恢复,甚至研究过线程,但发现winform只能使用一个线程 我想知道是否有一种方法可以在另一个线程中创建文本框,然后将它们添加到主窗体中,或者有一种方法可以更好地创建332个文本框 感谢您的帮助。根据您的布局,我强烈建议将文本框替换为DataGridView,或者使用某种连续控件加载滚动文本框。 主要的瓶颈是手柄的创建。在winforms中,每个控件都有自己的句柄(甚至是标签)

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

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


感谢您的帮助。

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


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

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


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

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

我的解决方法是用“加载…”飞溅来阻止程序,并按编程方式单击选项卡,以便加载/激活控件。完成此操作后,选项卡页面不应花费那么长的时间再次显示


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

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

我的解决方法是用“加载…”飞溅来阻止程序,并按编程方式单击选项卡,以便加载/激活控件。完成此操作后,选项卡页面不应花费那么长的时间再次显示


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

简单:不要使用300个文本框。一次只能使用一个文本框。其余的数据可以直接绘制,当用户想要编辑时,可以为其创建编辑控件。这正是网格的工作原理,因此我建议使用网格或类似控件。

简单:不要使用300个文本框。一次只能使用一个文本框。其余的数据可以直接绘制,当用户想要编辑时,可以为其创建编辑控件。这正是网格的工作原理,因此我建议使用网格或类似控件。

我不知道为什么有这么多文本框?您可以做的不是使用文本框,而是通过捕获WM_PAINT消息来进行自己的文本绘制。如果可以,将多个文本框包装到逻辑组框控件中?该程序用于跟踪多个RPG字符。文本框必须匹配位图背景上的位置。源代码可以找到在winforms中有一种叫做双缓冲的东西尝试将其设置为True我不知道为什么有这么多文本框?您可以做的不是使用文本框,而是通过捕获WM_PAINT消息来进行自己的文本绘制。如果可以,将多个文本框包装到逻辑组框控件中?该程序用于跟踪多个RPG字符。文本框必须匹配位图背景上的位置。源代码可以找到,在winforms中有一种叫做双缓冲的东西,请尝试将其设置为true。感谢您的快速响应和全面回答。我会试试dattagrid。谢谢你的快速回复和详尽的回答。我要试试达塔格里德。