c# – 共享ComboBox DataSource

前端之家收集整理的这篇文章主要介绍了c# – 共享ComboBox DataSource前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我可以问为什么两个组合框都相互触发,这两个都有相同的值?
我不能共享一个列表,并有两个组合框与不同的选定文本?
private void Form1_Load(object sender,EventArgs e)
    {
        BindingList<string> list = new BindingList<string>();
        list.Add("A");
        list.Add("B");
        list.Add("C");
        list.Add("D");

        bind(cbo1,list);
        bind(cbo2,list);
    }

    private void bind(ComboBox comboBox,BindingList<string> list)
    {
        // commented lines are in actual code,// but appears unimportant in this question
        //comboBox.DropDownStyle = ComboBoxStyle.DropDown;
        //comboBox.AutoCompleteSource = AutoCompleteSource.ListItems;
        //comboBox.AutoCompleteMode = AutoCompleteMode.Suggest;
        comboBox.DataSource = list;
        //comboBox.Focus();
        //comboBox.Text = string.Empty;
        //comboBox.SelectedText = string.Empty;
    }

更新:
好的,现在我发现问题是DataSource由一些BindingContext和CurrencyManager管理,以自动同步列表.但是我觉得有人必须知道如何禁用这种行为.

我不希望使用2个不同的列表,因为我希望能够在运行时修改这个单一的列表,并且更改会反映在所有ComboBox中.任何实现这一点的方法都将不胜感激.

解决方法

你可以这样解决它:
// comboBox.DataSource = list;
var curr = new BindingSource(list,null);        
comboBox.DataSource = curr;

有一个默认的BindingSource(Currencymanager)链接到每个Form,保持2 cbx同步.但我不知道这里有什么确切的规则.我甚至不知道上述是不是一个好主意.

对于小列表,我将分开复制.

猜你在找的C#相关文章