我正在尝试选择ListBox中的所有项目并为此目的制作此扩展方法:
public static void SetSelectedAllItems(this ListBox ctl)
{
for (int i = 0; i < ctl.Items.Count; i++)
{
ctl.SetSelected(i, true);
}
}
问题是如果我在ListBox中有很多项目,那么完成此任务需要很长时间,我可以看看ListBox如何自动向下滚动并选择项目。
有没有办法临时暂停控件的更新,以便任务完成得更快?我尝试使用:
ctl.SuspendLayout();
for (int i = 0; i < ctl.Items.Count; i++)
...
ctl.ResumeLayout();
但这似乎没有做任何事情。
答案 0 :(得分:7)
调用BeginUpdate
和EndUpdate
方法,以防止在设置该控件的属性时绘制/呈现控件。
以下是修订后的代码:
public static void SetSelectedAllItems(this ListBox ctl)
{
ctl.BeginUpdate();
for (int i = 0; i < ctl.Items.Count; i++)
{
ctl.SetSelected(i, true);
}
ctl.EndUpdate();
}
您说您已尝试调用SuspendLayout
和ResumeLayout
,但这只会影响控件的布局事件。当您想要更改控件相对于其他控件的位置时,可以使用这对方法,例如设置Size
,Location
,Anchor
或Dock
属性时。