1

私は2つのコンボボックスを言ってAおりB、C#winformsにあります。
デフォルトでは、B は無効になっています。外部の xml ファイルから A にデータ項目を入力しています。

ここで、ユーザーが A の選択肢を選択すると、B が有効になり、A の選択肢に応じて別の XML から入力されます。そして最も重要なことは、これらすべてを単一の関数で達成する必要があることです。

どうすればこれを達成できますか?

B の選択変更イベントをトリガーすることはできますが、それにはもう 1 つの機能が必要です。何か方法はありますか?

ただし、スニペットは次のとおりです。

    XmlDocument errors = new XmlDocument();
    errors.Load("../../ErrorFile.xml");
    XmlElement root = errors.DocumentElement;
    XmlNode categoryNode = root.FirstChild;
    XmlNodeList nodes = categoryNode.ChildNodes;
    for (int i = 0; i < nodes.Count; i++)
         A.Items.Add(nodes[i].Name);
    string category = A.SelectedItem.ToString();
4

3 に答える 3

0

AのComboBox.SelectedIndexChangedイベントを使用して、コンボボックスBにデータを入力します

于 2012-09-14T05:43:55.143 に答える
0

コンボ ボックス 1 を関連する xml ファイルにバインドします。そして、その選択変更イベントを使用して、コンボ ボックス 2 を、コンボ ボックス 1 の選択された値に関連する他の xml にバインドします。

于 2012-09-14T05:49:22.790 に答える
0

「In.xml」というファイルがあるとします。

<root>
  <a name="1">
    <b>b1</b>
    <b>b2</b>
    <b>b3</b>
  </a>
  <a name="2">
    <b>c1</b>
    <b>c2</b>
    <b>c3</b>
  </a>
</root>

Form2 つのコンボボックスがある場合:

    XElement x;

    public Form1()
    {
        InitializeComponent();

        x = XElement.Load("In.xml");
        comboBox1.Items.AddRange(
             x.Elements("a")
              .Select(a => a.Attribute("name").Value)
              .ToArray());
        comboBox1.SelectedIndexChanged += new EventHandler((s, e) =>
        {
            comboBox2.Items.Clear();
            if (comboBox1.SelectedIndex > -1)
            {
                comboBox2.Items.AddRange(
                    x.Elements("a")
                     .First(a => a.Attribute("name")
                                  .Value
                                  .Equals(comboBox1.SelectedItem))
                     .Elements()
                     .Select(b => b.Value)
                     .ToArray());
            }
        });
    }
于 2012-09-14T06:06:21.297 に答える