我又有一个非常复杂的问题,所以我会尽力解释:
我有一个C#Windows窗体(。NET 4)程序。我的Windows窗体包含一个大的空白面板。
在这个程序中,我有一个带有设计器的Windows窗体用户控制类。用户控件是一个盒子,上面有两个组合框和一个文本框(称之为菜单选择)。
用户控件上的每个组合框都使用以下命令绑定到不同的数据源:
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);
但是,我需要使用数据源,以便按id区分项目(一些显示的名称是相同的-我无法更改)。
我现在使用的是:
comboBoxSelection1.DataSource = SelectionList1;
comboBoxSelection1.ValueMember = "Code";
comboBoxSelection1.DisplayMember = "Name";
问题是,每当我在一个用户控件上更改comboBoxSseltion1时,面板上每个用户控件上的comboBoxSseltion1值都会更改为我的当前选择。如果我更改任何comboBoxSseltion2中的值,则所有comboBoxSseltion2框都更改为相同的值,comboBoxSseltion2也会发生相同的情况。
对于多个控件使用一个数据源,这是一个bug吗
在这里可以看到:数据绑定组合框:当我选择另一个组合框时,列表项发生了更改
在本例中,问题是通过使用数据绑定而不是数据源解决的
如图所示:组合框SelectedItem vs SelectedValue。
但当我尝试此代码时,我的组合框项目列表仍然为空:
BindingSource comboBoxSelection1Binding = new BindingSource();
comboBoxSelection1.DataSource = SelectionList1;
comboBoxRuleCustomerGroup.DataBindings.Add("SelectedValue", comboBoxSelection1, "Name", true, DataSourceUpdateMode.OnPropertyChanged);
有什么想法吗<对不起,这个问题太复杂了,我一直在写太复杂的程序!
如果您想完全避免使用数据源
您可以将项目添加为类,而不是fx
ComboBox1.Items.Add(new MyClass("Name", 1))
然后上课
public class MyClass
{
private readonly string _Navn;
public MyClass(string name, Int id)
{
Id = id;
Name = name;
}
public int Id{ get; }
public override string ToString()
{
return Name;
}
}
然后当你需要访问ID时,你会喜欢这样。
(ComboBox1.SelectedItem as MyClass).Id
您可以尝试将从对象[]开始的代码片段重构为传递ComboBox控件和SseltionList的自己的方法。
private void PopulateList(ComboBox boxToPopulate, List<String> selectionList)
{
object[] comboBoxList1 = new object[selectionList.Count];
int i = 0;
foreach (Selection s in selectionList)
{
string description = s.Description;
comboBoxList1[i] = description;
i++;
}
boxToPopulate.Items.AddRange(comboBoxList1);
}
使用此方法,您可以拥有无限数量的组合框,并唯一地填充它们。
在周末深入思考后,做了更详细的搜索。我之前搜索的问题是不知道到底发生了什么。我现在意识到,当试图将多个组合框绑定到同一数据集时,这是一个问题。
最终发现:来自同一数据集的多个ComboBox控件
答案是添加一行:
comboBoxSelection1.BindingContext = new BindingContext();
都归功于盲怒/约翰·桑德斯和Bytes.com.
我是C#新手,我不断收到以下无法删除的错误。 我的代码如下,我不能确切地说出哪一行导致了错误,但我怀疑它与RibbonRadioButtons有关,因为如果我删除它们,我不会得到错误。只有在单击两个或更多单选按钮后,错误才会出现。ComboBoxItem上的一个回答继续抛出绑定错误,尽管style暗示是多个Refresh()语句导致了这个问题,但我不知道如何避免这个问题。 有人能帮我解决这个问题吗
我没有在.xaml中指定任何特殊的内容,所以我将省略该部分。除此之外,我希望能够使用Name属性设置SelectedItem。我非常希望答案在代码后面,但如果它愚蠢地复杂,只有xaml的答案也一样好。我没有MVVM的任何经验,我可以假设它会被建议。随着我对WPF的深入研究,我当然会扩展我在这方面的知识,但现在我只想让它发挥作用 这不是家庭作业 编辑:忘记列出我也会遇到的错误 系统.Windows。
我有一个包含以下列的表格: 表在在线数据库中。我使用dataset.xsd文件和连接字符串在客户端和在线数据库之间进行通信。 以下是我使用的一些方法:
控制器类别:包装样品;
本文向大家介绍ASP.NET数据绑定之GridView控件,包括了ASP.NET数据绑定之GridView控件的使用技巧和注意事项,需要的朋友参考一下 GridView 是 DataGrid的后继控件,在.net framework 2 中,虽然还存在DataGrid,但是GridView已经走上了历史的前台,取代DataGrid的趋势已是势不挡。 作用:其功能是在web页面中显示数据源中的数据
本文向大家介绍ASP.NET数据绑定之Repeater控件,包括了ASP.NET数据绑定之Repeater控件的使用技巧和注意事项,需要的朋友参考一下 在ASP.NET的学习过程中,其控件的学习和使用占了很大的一部分,本文为大家介绍一下控件Repeater控件的使用,用它来绑定后台数据,然后在客户端(浏览器)上显示出来! 一、 Repeater控件 1、用途:使用模板循环显示数据。 2、包含的模板