コンボボックス (comBox1) に入力するために使用している KeyValuePairs (equalityMap) で満たされた辞書を取得しました。
comBox1 の初期化の一環として、以下の関数を呼び出したいと思います。次に、別のコンボボックス (comBox2) から selectedValueChanged イベントを作成します。このイベントは、以下の関数を呼び出し、comBox2 の選択値のタイプに基づいて comBox1 のコンテンツを変更します。
等値コンボボックスが最初に初期化されたとき、すべてが期待どおりに機能しています。ただし、この関数が再度呼び出されると、コンボボックスに「キー」が表示される代わりに、[「キー」、「値」] の形式で「キー」と「値」が表示されます。
私は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";