1

私にはコンボボックス1とコンボボックス2があり、コンボボックス1には要素がA、B、Cとコンボボックス2 a、b、c、d、e、fです...そして、プロパティscreeenを使用してこの要素を追加しました(つまり、コードではありません)。

       combobox1                     combobox2
    ---------------               ---------------
           A                            a
           B                            b
           C                            c
                                        d
                                        e
                                        f

A は a、b、c に関連し、B は b、c に関連し、C は d、e、f に関連します。

「A」を選択すると、 a,b,c だけが表示されます。「B」を選択すると、b、cなどだけです。

コンボボックス 1 のアイテムのインデックス番号を指定できますか? "A" を選択すると、"a"、"b"、"c" 要素 (つまり、0,1,2 インデックス番号) のみが表示されます。"B" を選択すると、b,c (つまり、1、 2 インデックス番号)。インデックス番号がない場合は、コードを書くこととすべての関係を築く必要があります。以下に小さなコードを書きましたが、それは長い道のりです。

コンボボックスにインデックスロジックがある場合は、インデックスロジックの方が優れています:)

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
  {
     comboBox2.Items.Clear();
     switch (comboBox1.SelectedItem.ToString())
      {
        case "A":
           comboBox2.Items.AddRange(new string[] { "a", "b", "c" });
           break;

        case "B":
           comboBox2.Items.AddRange(new string[] { "b", "c" });
           break;
      }
      comboBox2.SelectedIndex = -1;
   }
4

1 に答える 1

2

構造体にインデックスを付けることで、case ステートメントを回避できます。

Dictionary<string, List<string>> items = 
      new Dictionary<string, List<string>>() { {"A", new List<string> {"a", "b","c"} } };

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
  {
     combobox2.DataSource = ltems[comboBox1.SelectedItem.ToString()];
     combobox2.DataBind();
   }
于 2012-07-25T06:50:04.513 に答える