我想知道我是否可以做些什么来加快速度,我已经将时间延迟缩小到下面这部分代码。我想知道是否还有其他方法可以使它至少快 2-3 倍。
form1.SuspendLayout();
foreach (KeyValuePair<Control, bool> i in ItemControlUpdates)
{
i.Key.Visible = i.Value;
}
form1.ResumeLayout();
编辑: 谢谢你们的评论,我更正了我的代码,希望它能指出我的具体问题。 (我不需要写入文件)
编辑2: 280 个控件是用户控件,我的应用程序要求在进行排序选择时查看全部或部分控件。
编辑3: 答案是:必须在父级上调用 SuspendLayout() 才能有效,当我需要在控件所在的面板上使用它时,我在表单上错误地使用了它。
最佳答案
问题在于控件嵌入在面板中,并且将 form1.SuspendLayout() 与 panel.SuspendLayout() 进行交换使得此操作根本不需要时间。有几个人暗示过这一点,我建议人们查看 stakx 答案,因为它包含针对与此类似问题的其他/类似可能解决方案。
这是很好用的固定代码:
cPanel.SuspendLayout();
foreach (KeyValuePair<Control, bool> i in ItemControlUpdates)
{
i.Key.Visible = i.Value;
}
cPanel.ResumeLayout();
关于c# - 将 ~280 个控件从 visible=true 更改为 visible=false 大约需要 8-9 秒(太长),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27120723/