c# - 从 xml 文件加载控件

标签 c# winforms linq controls linq-to-xml

我知道如何写入 xml 文件,但我在做我需要做的事情时遇到了困难,并且无法找到有关此类问题的足够信息。

下面是一个 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<controls>
    <Label Content="Double-click to edit." Location="258, 178" Size="101, 13" ForeColor="-1" />  
    <LinkLabel Content="Double-click to edit." Location="532, 133" Size="101, 13" LinkColor="-1" />  
    <LinkLabel Content="Double-click to edit." Location="424, 212" Size="101, 13" LinkColor="-1" /> 
    <Label Content="Double-click to edit." Location="282, 89" Size="101, 13" ForeColor="-1" />  
    <Label Content="Double-click to edit." Location="528, 178" Size="101, 13" ForeColor="-1" />  
    <LinkLabel Content="Double-click to edit." Location="528, 133" Size="101, 13" LinkColor="-1" />  
    <LinkLabel Content="Double-click to edit." Location="528, 149" Size="101, 13" LinkColor="-1" /> 
    <Label Content="Double-click to edit." Location="528, 164" Size="101, 13" ForeColor="-1" />
</controls>

在我的应用程序中打开此文件后,我需要做的是:

foreach(control in XmlFile)
{   

  get Content
  get Location
  get Size
  get ForeColor/LinkColor
  // do something...
}

有人可以帮我解决这个问题吗?如果有任何帮助,我将不胜感激。

谢谢

贝尔

最佳答案

使用 LINQ: (对于 ForeColor/LinkColor 检查是否为 null)

XDocument loaded = XDocument.Load(@"C:\XMLFile1.xml");

            var q = from c in loaded.Descendants().Descendants()
                            select new
                            {
                                content = c.Attribute("Content"),
                                location = c.Attribute("Location"),
                                size = c.Attribute("Size"),
                                foreColor = c.Attribute("ForeColor"),
                                linkColor = c.Attribute("LinkColor")
                            };

            foreach (var controlItem in q)
                Console.WriteLine("Control content = {0}", controlItem.content);

关于c# - 从 xml 文件加载控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2217401/

相关文章:

c# - 按回车键时更改焦点控制

c# - 如何在 C# 中处理 List.First 中不匹配的情况?

c# - 如何在现有远程数据库中添加表并将其链接到 Entity Framework 模型?

c# - 从没有 DoEvents 的 WebBrowser 控件获取 ReadyState

winforms - 为什么我的 WindowsForm 在执行循环时没有响应

c# - Winforms清除位图图像?

linq - Linq Join 中的大于条件

.net - LINQ 到 SQL 交叉应用

c# - 如何在 ReactiveUI 7 中直接调用 ReactiveCommand.Execute() 正确?

c# - 如何将属性添加到标有 XmlArrayAttribute 的集合中?