Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在winform中绑定checkedListBox需要这么多时间?_C#_Winforms - Fatal编程技术网

C# 为什么在winform中绑定checkedListBox需要这么多时间?

C# 为什么在winform中绑定checkedListBox需要这么多时间?,c#,winforms,C#,Winforms,我将创造性示例项目和测试checkedListBox数据源绑定到 发现它花费了大约0.03秒的时间 我有100个控件,因此如何减少绑定时间 这是我的Sameple代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) {

我将创造性示例项目和测试checkedListBox数据源绑定到

发现它花费了大约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; }
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
列表项=新列表();
秒表=新秒表();
添加(新的clsListItem(){Value=“01”,Text=“NYY”});
添加(新的clsListItem(){Value=“02”,Text=“OAK”});
添加(新的clsListItem(){Value=“03”,Text=“BAL”});
watch.Start();
((ListBox)checkedListBox1)。数据源=项;
((列表框)选中列表框1.DisplayMember=“Text”;
((列表框)选中列表框1.ValueMember=“Value”;
看,停;
TimeSpan tt=手表已过时间;
Show(tt.TotalSeconds.ToString());
}
}
公共类clsListItem{
公共字符串文本{get;set;}
公共字符串值{get;set;}
}

如果可能,添加到对象集合而不是绑定到数据源:((ListBox)checkedListBox1.Items.AddRange(Items.ToArray());应在0.0005到0.0007秒之间

根据需要延迟加载控件。您也可以尝试不使用
DisplayMember
ValueMember
。相反,在
clsListItem
类中重写
ToString()
方法。大约浪费0.03~0.04秒。请在设置DisplayMember和ValueMember属性后,最后尝试设置DataSource属性。否则,屏幕上有100个CheckedListBox控件就太多了。没有一个用户能够,也不想,一次在屏幕上看到那么多信息。我会重新考虑您的用户界面。如果可能,请添加到对象集合,而不是绑定到数据源:
((ListBox)checkedListBox1.Items.AddRange(Items.ToArray())应在0.0005到0.0007秒之间。