这可能是一个非常简单的问题,但我正在学习!所以有些编程可能看起来有点业余!
我正在开发一个应用程序,它使用 WizardPages 控件来创建一个隐藏选项卡的类似向导的界面。向导有 5 个“步骤”,每个步骤都有自己的选项卡。
在向导的第 3 步中,根据用户选择加载一个 XML 文档。他们可以选择加载默认 XML 或提供自定义 XML 文件的路径。在步骤 3 的按钮单击事件中调用 loadXML() 方法,if 语句说“如果选择了默认选项,则从默认路径加载,否则从用户指定的路径加载”。然后,XML 的这种加载会在步骤 4 中填充一个列表框。我正在使用 XML to LINQ,正如您从下面的代码片段中看到的那样。
private void loadXML()
{
if (configFilePathTextBox.Enabled == true)
{
// Load XML from that path
XDocument config = XDocument.Load(configFilePathTextBox.Text);
// Populate next screen
IEnumerable<XElement> elList =
from el in config.Descendants("software_entry")
select el;
foreach (XElement el in elList)
listBox1.Items.Add(el.Attribute("name"));
MessageBox.Show("Configuration file loaded successfully.");
}
else
{
// Load XML from default path
XDocument config = XDocument.Load(Application.StartupPath + @"\config.xml");
// Populate next screen
IEnumerable<XElement> elList =
from el in config.Descendants("software_entry")
select el;
foreach (XElement el in elList)
listBox1.Items.Add(el.Attribute("name"));
MessageBox.Show("Configuration file loaded successfully.");
}
}
这可行,但是有没有办法加载 XDocument 以便可以在所有方法中访问它?事实上,每次我想对它做任何事情时,我都必须使用 XDocument.Load 方法,并且在每次加载时,我必须使用相同的 if 语句来确定要加载哪个文件(默认或自定义)。
这真的很令人困惑,因为在我的应用程序的第 5 步中,我正在尝试创建一个 foreach 循环来遍历第 4 步中的列表框中的每个条目(由此 XML 文档填充),根据列表框(这只是软件的名称,其他属性包括文件类型、路径等),然后将一行写入包含所有这些信息的批处理文件。事实上,考虑到 XDocument 加载的 if 循环,我不知道如何正确格式化这个循环。
我考虑过使用此处描述的第二种方法,但我不确定如何将我的第三步中的用户选择元素合并到其中。我只是有点困惑!
谢谢你的帮助。我不擅长解释问题,所以如果您需要更多信息/说明,请提出问题。