gpt4 book ai didi

.net - 使用 BindingSource 很慢?

转载 作者:行者123 更新时间:2023-12-05 00:05:26 28 4
gpt4 key购买 nike

我有一个 C# Windows 窗体项目,其中包含一个包含 2 个列表框和一个按钮的窗体。
在 FormLoad 上,左侧 ListBox 填充了一个列表(大约 1800 项),其中包含有关证券(ID 和名称)的信息,当用户单击按钮时,所有证券都从左侧列表框移动到右侧。

当我不使用 BindingSources 时,即我直接使用 ListBoxes 的 Items 属性时,移动过程需要几秒钟:

private void button1_Click(object sender, EventArgs e)
{
while (listBox1.Items.Count > 0)
{
Security s = listBox1.Items[0] as Security;
listBox1.Items.Remove(s);
listBox2.Items.Add(s);
}
}

但是,当我使用 BindingSources 时,它需要几分钟:
listBox1.DataSource = bindingSource1;
listBox2.DataSource = bindingSource2;

...

private void MainForm_Load(object sender, EventArgs e)
{
ICollection<Security> securities = GetSecurities();
bindingSource1.DataSouce = securities;
}

private void button1_Click(object sender, EventArgs e)
{
while (bindingSource1.Count > 0)
{
bindingSource1.Remove(s);
bindingSource2.Add(s);
}
}

BindingSource 方式需要这么长时间的原因是什么?
有没有办法让它更快?

最佳答案

您应该取消设置 RaiseListChangedEvents BindingSource 上的属性,然后再对 BindingSource 进行大量更改,并在完成后重置。然后你可以使用 ResetBindings刷新绑定(bind)的控件。

您还应该使用 BeginUpdate/EndUpdate 对列表框项进行大量操作,以避免重绘。这可能是导致经济放缓的主要原因。

关于.net - 使用 BindingSource 很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4525393/

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