c# - .Net Controls DataSource 属性上的缺失行为

标签 c# .net winforms

我有一个带有网格的 WinForm 应用程序,每行包含一个 ComboBox。所有都绑定(bind)到同一个集合(集合可能会在后面发生变化,这就是为什么我不希望每个 Combo 有不同的集合,还有内存成本)。问题是,当我在一个组合中选择某个对象时,它会更改每个组合中的选定对象。
这是您可以运行并轻松重现的代码。

public Form1()
        {
           InitializeComponent();

            this.comboBox1 = new System.Windows.Forms.ComboBox();
            List<int> numList = new List<int>(){1,2,3,4};
            this.comboBox1.FormattingEnabled = true;
            this.comboBox1.Location = new System.Drawing.Point(33, 169);
            this.comboBox1.Name = "comboBox1";
            this.comboBox1.Size = new System.Drawing.Size(126, 21);
            this.comboBox1.TabIndex = 3;
            this.comboBox1.DataSource = numList;   // BINDING TO NUMLIST

            this.comboBox2 = new System.Windows.Forms.ComboBox();
            this.comboBox2.FormattingEnabled = true;
            this.comboBox2.Location = new System.Drawing.Point(243, 367);
            this.comboBox2.Name = "comboBox2";
            this.comboBox2.Size = new System.Drawing.Size(126, 21);
            this.comboBox2.TabIndex = 4;
            this.comboBox2.DataSource = numList; // BINDING TO NUMLIST ( THE SAME LIST

            this.Controls.Add(this.comboBox2);
            this.Controls.Add(this.comboBox1);
        }

只需制作一个表格并粘贴 ComboBox 1 和 2 的声明。
任何想法怎么会发生。我的意思是如果它是一个简单的列表,它不会跟踪选定的对象。数据源背后发生了什么?

最佳答案

您需要使用单独的列表,如果您绑定(bind)到相同的列表,这是预期的行为。

关于c# - .Net Controls DataSource 属性上的缺失行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1644784/

相关文章:

c# - 带有自定义存储过程的 EF 6 代码优先

c# - 是否有 VC++ 的依赖管理器?

c# - 如何使用 Find 方法检查 C# 列表中是否存在条目

.NET SmtpClient : Is there a way to make sure that all emails resolve prior to sending MailMessage?

.net - 使用 LINQtoSQL 获取随机行

c# - C# 中的 Windows 资源管理器/Aero 样式工具提示?

C#:如何取消在表单上设置为“接受”或“取消”按钮的按钮的关闭操作?

c# - 映射到关系类型时 EF Core 3 添加迁移失败

.net - 错误: Cannot import wsdl:port with svcutil

c# - 用于 Linux 的 WinForms 设计器