0

我正在使用 c# 开发一个 win 表单应用程序我想向我的应用程序添加一个功能,通过它我可以根据用户输入更改 lable.text

我想使用一个 xml 文件,这样我就可以将一些标签设置为预定义的值,这些值可以随时更改,而无需重新编译应用程序或更改我的应用程序的语言

我有一个要在表单应用程序中使用的 xml 文件

    <?xml version="1.0" encoding="utf-8" ?>
  <product>
    <product_id>1</product_id>
    <product_name>Product 1</product_name>
    <product_price>1000</product_price>
  </product>
  <product>
    <product_id>2</product_id>
    <product_name>Product 2</product_name>
    <product_price>2000</product_price>
  </product>
  <product>
    <product_id>3</product_id>
    <product_name>Product 3</product_name>
    <product_price>3000</product_price>
  </product>
  <product>
    <product_id>4</product_id>
    <product_name>Product 4</product_name>
    <product_price>4000</product_price>
  </product>

在我的应用程序中,我有一些textbox1、textbox2textbox3和 Lables 作为 Lable1、Lable2、Lable3 的文本

关于textbox1中的文本更改我想更改lable1.text的根据 id 例如如果用户在 textbox1 中输入 1 那么标签文本应更改为产品 1

作为 c# 和编程的初学者,不知道如何使它工作....

4

2 回答 2

1

您可以使用Linq解析 xml到 Xml 。在文本更改事件上执行以下操作:

int id;
if (!Int32.TryParse(textbox1.Text, out id))
    return; // do nothing if not integer entered

XDocument xdoc = XDocument.Load(path_to_xml_file);
var product = xdoc.Descendants("product")
                  .FirstOrDefault(p => (int)p.Element("product_id") == id);

lable1.Text = (product == null) ? "" : (string)product.Element("product_name");

顺便说一句,当提出问题时,请始终提供您已经拥有的代码,以向我们展示您卡在哪里。同样正如我在问题下评论的那样,您的 xml 无效,因为它有几个根元素。将所有产品元素包装到某个根目录中,例如<products>.

于 2013-07-02T18:29:11.223 回答
0

考虑将您的问题划分为在 C# 中读写 XML 并查找每个答案,也可以使用 Settings.Settings 文件进行设置,如果您希望更改设置,请选择用户或应用程序。

构建 XML

读取 XML XPath

Ream XML XmlReader,单程

设置文件

于 2013-07-02T18:20:08.940 回答