gpt4 book ai didi

c# - WinForms ComboBox 数据绑定(bind)问题

转载 作者:IT王子 更新时间:2023-10-29 03:50:41 31 4
gpt4 key购买 nike

假设你正在做类似下面的事情

List<string> myitems = new List<string>
{
"Item 1",
"Item 2",
"Item 3"
};

ComboBox box = new ComboBox();
box.DataSource = myitems;

ComboBox box2 = new ComboBox();
box2.DataSource = myitems

现在我们有 2 个组合框绑定(bind)到该数组,一切正常。但是,当您更改一个组合框的值时,它会将两个组合框更改为您刚刚选择的那个。

现在,我知道数组总是通过引用传递(在学习 C :D 时了解到这一点),但到底为什么组合框会一起改变?我不相信组合框控件正在修改集合。

作为解决方法,这不会实现预期/期望的功能

ComboBox box = new ComboBox();
box.DataSource = myitems.ToArray();

最佳答案

这与 dotnet 框架中数据绑定(bind)的设置方式有关,尤其是 BindingContext。在高层次上,这意味着如果您没有另外指定,则每个表单和表单的所有控件共享相同的 BindingContext。当您设置 DataSource 属性时,ComboBox 将使用 BindingContext 来获取包装列表的 ConcurrenyMangagerConcurrenyManager 跟踪列表中的当前选定位置等信息。

当您设置第二个 ComboBoxDataSource 时,它将使用相同的 BindingContext(表单),这将产生对与上面相同的 ConcurrencyManager 用于设置数据绑定(bind)。

要获得更详细的解释,请参阅 BindingContext .

关于c# - WinForms ComboBox 数据绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/482/

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