【问题标题】:C# loading a XML fileC# 加载 XML 文件
【发布时间】:2013-01-03 14:55:06
【问题描述】:

如何使用 XML 文档提供的属性创建 Windows 窗体?

这是这样一个 XML 文档:

<Form>
   <Size>
     <Width>558</Width> 
     <Height>537</Height> 
   </Size>
   <Text>XML saving</Text> 
   <Name>Form1</Name> 
   <Button>
     <Name>button1</Name> 
     <Text>XML button</Text> 
     <Size>
       <Width>130</Width> 
       <Width>45</Width> 
     </Size>
     <Location>
       <X>14</X> 
       <Y>24</Y> 
     </Location>
   </Button>
 </Form>

加载表单后,我需要显示表单及其上的按钮以及 XML 文档中的值。

任何人都可以提供有关此主题的任何帮助或教程吗?

【问题讨论】:

  • 您是在编写 Windows 应用程序(WinForms、WPF)还是网站(WebForms、MVC)?
  • 我正在编写 WinForms 应用程序...
  • @DragoFlirt 我对你的回答有什么不清楚的地方吗?有任何问题都可以问

标签: c# xml winforms


【解决方案1】:

您可以使用内置功能来保存和恢复表单设置。使用application settings binding

您可以将窗体及其控件的大小、位置、文本等属性绑定到设置,这些属性将自动加载并应用于控件。步骤:

  • 选择一些控件并转到“属性”选项卡
  • 在数据类别下找到(ApplicationSettings) 属性
  • 打开属性绑定编辑器
  • 选择要从 xml 保存和加载的属性并为该属性创建新设置

如果你真的需要使用你的xml,那么你应该手动解析它。您可以创建一些(扩展)方法,例如(Linq to Xml 示例):

public static void ApplySettings(this Button button, XDocument xdoc)
{
    var settings = xdoc
                 .Descendatns("Button")
                 .SingleOrDefault(b => (string)b.Element("Name") == button.Name);

    if (settings == null)
       return;

    button.Text = (string)settings.Element("Text");
    var location = settings.Element("Location");
    if (location != null)
    {
        button.X = (int)location.Element("X");
        button.Y = (int)location.Element("Y");
    }

    //etc
}

并为每个控件调用这些方法:

var xdoc = XDocument.Load(settings_file);
button1.ApplySettings(xdoc);
// etc

【讨论】:

  • 您能否在答案中将投标更改为绑定?
  • @RyanGates 确定,没问题 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
  • 2013-11-26
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多