gpt4 book ai didi

C# databound ComboBox 更改其他控件中的数据

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:25 26 4
gpt4 key购买 nike

我又遇到了一个非常复杂的问题,所以我会尽力解释:

我有一个 C# Windows 窗体 (.NET 4) 程序。我的 Windows 窗体包含一个大的空白面板。
在这个程序中,我有一个带有设计器的 Windows 窗体 UserControl 类。用户控件是一个框,上面有两个 ComboBox 和一个 TextBox(称之为菜单选项)。

用户控件上的每个 ComboBox 使用以下方式绑定(bind)到不同的数据源:

comboBoxSelection1.DataSource = SelectionList1;
comboBoxSelection2.DataSource = SelectionList2;

当用户使用组合框选择一个项目时,文本框会显示他们的选择。
例如。选择 1:牛排,选择 2:薯条。

这个程序的全部意义在于允许用户创建多个用户控件(菜单选项),每个控件都有不同的选择,从而产生一个选项列表(成为一个单一的订单)。

到目前为止和我在一起吗?
在我开始为组合框使用 DataSource 之前,这工作得非常好,就像这样:

object[] comboBoxList1 = new object[SelectionList1.Count];
int i = 0;
foreach (Selection s in SelectionList1)
{
string description = s.Description;
comboBoxList1[i] = description;
i++;
}
comboBoxSelection1.Items.AddRange(comboBoxList1);

但是,我需要使用 DataSource 以通过 id 区分项目(一些显示的名称是相同的 - 我无法更改)。

我现在使用的是:

comboBoxSelection1.DataSource = SelectionList1;
comboBoxSelection1.ValueMember = "Code";
comboBoxSelection1.DisplayMember = "Name";

问题是,每当我更改其中一个用户控件上的 comboBoxSelection1 时,面板上每个用户控件上的 comboBoxSelection1 值都会更改为我的当前选择。如果我更改任何 comboBoxSelection2 中的值,comboBoxSelection2 也会发生同样的情况,所有 comboBoxSelection2 框都会更改为相同的值。

这是将一个 DataSource 用于多个控件的错误吗?
已在此处看到:Data Bound ComboBox: List item changed when I select another

在这种情况下,问题是通过使用 DataBindings 而不是 DataSource 解决的。
如此处所示:ComboBox SelectedItem vs SelectedValue .

但是当我尝试这段代码时,我的 ComboBox 项目列表仍然是空的:

BindingSource comboBoxSelection1Binding = new BindingSource();
comboBoxSelection1.DataSource = SelectionList1;
comboBoxRuleCustomerGroup.DataBindings.Add("SelectedValue", comboBoxSelection1, "Name", true, DataSourceUpdateMode.OnPropertyChanged);

有什么想法吗?
对于过于复杂的问题感到抱歉,我一直不得不编写过于复杂的程序!

最佳答案

在周末深入思考这个问题后,进行了更详细的搜索。我之前搜索的问题是不知道到底发生了什么。我现在意识到,在尝试将多个组合框绑定(bind)到同一数据集时会出现问题。

终于找到了: Multiple ComboBox controls from the same Dataset

答案是添加一行:

comboBoxSelection1.BindingContext = new BindingContext();

所有功劳归功于 Blind Fury/John Saunders 和 Bytes.com。

关于C# databound ComboBox 更改其他控件中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26552339/

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