gpt4 book ai didi

c# - 从容器中删除控件的最干净的方法是什么?

转载 作者:行者123 更新时间:2023-11-30 13:20:37 25 4
gpt4 key购买 nike

我遇到 WinForms 性能问题,这可能与我动态添加然后删除数百个控件有关。

编辑{该应用程序显示一个时间线,其中包含代表历史事件的控件。添加、删除或移动控件,具体取决于您跳转到的时间。性能问题不仅出现在添加和删除控件期间(我可以忍受),而且甚至在我跳转到没有历史事件的时间(意味着当前没有显示控件)之后也是如此。在跳转并到达时间线上没有事件的时间后,GUI 中的某些事件仍然需要很长时间才能完成,例如打开菜单或打开对话框。奇怪的是其他 GUI 事件,例如按下按钮,不会停止。

虽然内存消耗非常稳定,但会不会是资源释放有问题?

为了删除控件,我做了两件事:

  1. 取消注册所有事件的回调,
  2. 调用 containerPanel.Controls.Remove(control)

谢谢!

最佳答案

正如您已经观察到的,这不是内存问题。我的猜测是,问题是一个简单的事实,即您的程序需要经常刷新屏幕。如果您批量删除和添加那些“数百个控件”,您可以尝试禁用屏幕刷新,直到完成为止。
您可以使用 SuspendLayout 执行此操作和 ResumeLayout :

SuspendLayout();
for(...)
AddControl(...);
ResumeLayout();

SuspendLayout();
for(...)
RemoveControl(...);
ResumeLayout();

关于c# - 从容器中删除控件的最干净的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6166572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com