为什么绑定checkedListBox在winform中需要这么多时间?
问题描述:
我创造性的示例项目和测试checkedListBox数据源绑定,为什么绑定checkedListBox在winform中需要这么多时间?
并发现它花费了大约0.03秒的时间。
我有100个控件,所以如何减少绑定时间。
这是我的Sameple代码。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
List<clsListItem> items = new List<clsListItem>();
Stopwatch watch = new Stopwatch();
items.Add(new clsListItem(){ Value= "01", Text= "NYY"});
items.Add(new clsListItem() { Value = "02", Text = "OAK" });
items.Add(new clsListItem() { Value = "03", Text = "BAL" });
watch.Start();
((ListBox)checkedListBox1).DataSource = items;
((ListBox)checkedListBox1).DisplayMember = "Text";
((ListBox)checkedListBox1).ValueMember = "Value";
watch.Stop();
TimeSpan tt = watch.Elapsed;
MessageBox.Show(tt.TotalSeconds.ToString());
}
}
public class clsListItem {
public string Text { get; set; }
public string Value { get; set; }
}
答
如果可能的话,添加到对象收集,而不是结合到数据源:((列表框)checkedListBox1).Items.AddRange(items.ToArray());应该在0.0005到0.0007秒左右。
延迟加载控件,因为它们是需要的。您也可以尝试不使用“DisplayMember”和“ValueMember”。相反,重写'clsListItem'类中的'ToString()'方法。 – Loathing 2014-09-03 07:09:56
我试着重写clsListItem类中的ToString()方法,就是一样。关于浪费0.03〜0.04秒。 – user2846002 2014-09-03 07:51:16
设置DisplayMember和ValueMember属性后,尝试设置DataSource属性* last *。否则,屏幕上有100个CheckedListBox控件太多了。没有用户可以也不希望一次在屏幕上看到那么多信息。我会重新考虑你的用户界面。 – LarsTech 2014-09-03 14:03:21