gpt4 book ai didi

c# - 共享 ComboBox 数据源

转载 作者:可可西里 更新时间:2023-11-01 08:46:29 25 4
gpt4 key购买 nike

请问为什么两个组合框会相互触发以致两者具有相同的值?我不能共享一个列表并拥有 2 个包含不同所选文本的组合框吗?

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 个不同的列表,因为我希望能够在运行时修改这个单个列表,并将更改反射(reflect)在所有 ComboBox 上。任何实现此目的的方法都将不胜感激。

最佳答案

你可以这样“解决”它:

// combobox.DataSource = list;
var curr = new BindingSource(list, null);
combobox.DataSource = curr;

有一个默认的 BindingSource (Currencymanager) 链接到每个保持 2 cbx 同步的表单。但我不确定这里的确切规则是什么。我什至不确定以上是否是个好主意。

对于小列表,我会制作单独的副本。

关于c# - 共享 ComboBox 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com