2014-09-03 61 views
0

我创造性的示例项目和测试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; } 
} 
+0

延迟加载控件,因为它们是需要的。您也可以尝试不使用“DisplayMember”和“ValueMember”。相反,重写'clsListItem'类中的'ToString()'方法。 – Loathing 2014-09-03 07:09:56

+0

我试着重写clsListItem类中的ToString()方法,就是一样。关于浪费0.03〜0.04秒。 – user2846002 2014-09-03 07:51:16

+1

设置DisplayMember和ValueMember属性后,尝试设置DataSource属性* last *。否则,屏幕上有100个CheckedListBox控件太多了。没有用户可以也不希望一次在屏幕上看到那么多信息。我会重新考虑你的用户界面。 – LarsTech 2014-09-03 14:03:21

回答

0

如果可能的话,添加到对象收集,而不是结合到数据源:((列表框)checkedListBox1).Items.AddRange(items.ToArray());应该在0.0005到0.0007秒左右。

相关问题