加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 共享ComboBox DataSource

发布时间:2020-12-15 06:23:59 所属栏目:百科 来源:网络整理
导读:我可以问为什么两个组合框都相互触发,这两个都有相同的值? 我不能共享一个列表,并有两个组合框与不同的选定文本? private void Form1_Load(object sender,EventArgs e) { BindingListstring list = new BindingListstring(); list.Add("A"); list.Add("B")
我可以问为什么两个组合框都相互触发,这两个都有相同的值?
我不能共享一个列表,并有两个组合框与不同的选定文本?
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同步.但我不知道这里有什么确切的规则.我甚至不知道上述是不是一个好主意.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读