【问题标题】:Populate ComboBox from XML从 XML 填充 ComboBox
【发布时间】:2016-01-16 07:16:31
【问题描述】:

我正在尝试使用我的 XML 文件中的字段在 C# 中填充 Combobox,但没有运气...我不知道这里出了什么问题(它没有显示任何内容):

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("Baza_de_cunostinte.xml");

        var dataSource = new List<Persoane>();
        string PersoanaPlacuta;

        foreach (XmlNode node in doc.DocumentElement)
        {
            string persoanaPlacuta = node["PersoanaPlacuta"].InnerText.Replace("\"", "");

            comboBox1.Items.Add(persoanaPlacuta);
        }
     }

这是 XML 文件:

 <root>
  <Persoane>
    <Nume>"Bob"</Nume>
    <IsMale>true</IsMale>
    <Varsta>30</Varsta>
    <PersoanaPlacuta>"Iulia"</PersoanaPlacuta>
  </Persoane>

  <Persoane>
    <Nume>"Bogdan"</Nume>
    <IsMale>true</IsMale>
    <Varsta>28</Varsta>
    <PersoanaPlacuta>"Ana"</PersoanaPlacuta>
  </Persoane>

</root>

【问题讨论】:

  • 当用户更改所选项目时,您正在更改项目,所以基本上,所选项目总是在变化。
  • 同时显示您的 XML 以便更清楚地了解您的问题

标签: c# xml visual-studio combobox


【解决方案1】:

我认为您搜索的不是正确的 Xml 节点地址。您应该使用完整地址来查找目标节点。

使用XmlNodeList 获取具有完整地址的所有节点,然后遍历其项目:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    XmlDocument doc = new XmlDocument();
    doc.Load("Baza_de_cunostinte.xml");

    var dataSource = new List<Persoane>();
    string PersoanaPlacuta;


     XmlNodeList xmlNodeList = doc.SelectNodes("//root//Persoane");
     foreach (XmlNode node in xmlNodeList)
     {
        string PersoanaPlacuta = node.ChildNodes[3].InnerText.Replace("\"", "");
        comboBox1.Items.Add(PersoanaPlacuta);
     }
}

您也可以像这样更改foreach 循环:

foreach (string PersoanaPlacuta in from XmlNode node in xmlNodeList 
                            select node.ChildNodes[3].InnerText.Replace("\"", ""))
{
    comboBox1.Items.Add(PersoanaPlacuta);
}

注意:您最好在第一行添加comboBox1.Items.Clear();,否则您的ComboBox 中会出现重复项

【讨论】:

  • 我用过 "string persoanaPlacuta = node["PersoanaPlacuta"].InnerText.Replace("\"", ""); " 在 ListBox 中显示名称并且它起作用了....
  • @user3063909 所以它工作了仍然没有显示任何东西
  • @user3063909 你真的需要设置一个断点并开始调试你的代码。因为此代码在我的示例应用程序中运行良好。
猜你喜欢
  • 2014-03-06
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多