我有一个填充了KeyValuePairs(equalityMap)的字典,我用它来填充组合框(comBox1)。C#在清除/设置为空后重新填充字典
我想调用下面的函数作为初始化comBox1的一部分。然后,我从另一个ComboBox(comBox2)中获取selectedValueChanged事件,该事件调用以下函数,并根据comBox2的选定值的类型更改comBox1的内容。
当首次初始化平等组合框时,所有内容都按预期工作。但是,当再次调用该功能时,不是仅显示组合框中的“键”,而是以格式[“键”,“值”]显示“键”和“值”。
I我只是刚刚开始使用C#(或者任何带有GUI的东西),所以不确定调试这种类型的最佳方式。任何帮助赞赏。
public void popEqualities(String fieldType)
{
this.equalities.DataSource = null;
this.equalities.Items.Clear();
this.equalityMap.Clear();
if (fieldType == "string")
{
equalityMap.Add("is", "=");
equalityMap.Add("is not", "!=");
equalityMap.Add("contains", "CONTAINS");
equalityMap.Add("begins with", "LIKE '%");
}
else if (fieldType == "int")
{
equalityMap.Add("is equal to", "=");
equalityMap.Add("is not equal to", "!=");
equalityMap.Add("is greater than", ">");
equalityMap.Add("is less than", "<");
}
else if (fieldType == "date")
{
equalityMap.Add("is", "=");
equalityMap.Add("is not", "!=");
equalityMap.Add("is after", ">");
equalityMap.Add("is before", "<");
}
else if (fieldType == "boolean")
{
equalityMap.Add("is", "=");
}
else
{
MessageBox.Show("Recieved bad Field Type");
return;
}
this.equalities.DisplayMember = "Key";
this.equalities.ValueMember = "Value";
this.equalities.DataSource = new BindingSource(equalityMap, null);
}
编辑:申报的股权地图我打电话
this.equalityMap = new Dictionary<string, string>();
在类的构造,并具有以下作为类的私有成员。
private Dictionary<string, string> equalityMap
调用该函数的事件仅仅是
public void searchFieldChanged(object sender, EventArgs e)
{
string fieldType = getFieldType();
popEqualities(fieldType);
}
这里有一对夫妇图片的显示问题 在初始呼叫
。
在随后的调用
。
修正:
原来,当我重新绑定的DataSource它每次清理DisplayMember属性 -
this.equalities.DisplayMember = "Key";
当您移动线重新绑定这些分配它修复上面的数据源问题。
this.equalities.DataSource = new BindingSource(equalityMap, null);
this.equalities.DisplayMember = "Key";
this.equalities.ValueMember = "Value";
请提供您的'equalityMap'声明。 – 2013-03-27 10:28:08
假设'equalities'是一个标准组合框控件,您的确切代码,我无法重现您的问题。是否还有其他可能影响解决方案的相关代码? – 2013-03-27 10:49:04
第一次填充组合框之后调用的唯一代码就是上面的事件和popEqualities函数。 – 2013-03-27 11:05:55