1

我在 C# winforms 中A有两个组合框。 默认情况下,B 将被禁用。我正在从外部 xml 文件将数据项填充到 A 中。B

现在,如果用户在 A 中选择选项,B 将被启用,并将根据 A 中的选择从另一个 XML 填充。最重要的是,我必须在单个函数中实现所有这些。

我如何实现这一目标?

我可以触发 B 的选择更改事件,但这需要另外一个功能。有什么办法吗?

这是片段:

    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

说,你有一个文件“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>

和 aForm有两个组合框,然后:

    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 回答
0

将组合框一绑定到相关的 xml 文件。并使用其选择更改事件将组合框二绑定到与组合框的选定值相关的其他 xml。

于 2012-09-14T05:49:22.790 回答