这可能是一个非常简单的问题,但随着我的进展,我有点学习!因此,一些编程可能看起来有点业余!
我正在开发一个使用WizardPages控件创建类似向导的界面的应用程序,其中隐藏了选项卡。向导有5个“步骤”,每个步骤都有自己的选项卡。
在向导的第3步中,将根据用户选择加载XML文档。他们可以选择加载默认XML或提供自定义XML文件的路径。在步骤3的按钮单击事件中调用loadXML()方法,if语句说“如果选择了默认选项,则从默认路径加载,否则从用户指定的路径加载”。然后,加载XML然后在步骤4中填充一个列表框。我正在使用XML到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语句来确定要加载的文件(默认或自定义)。 / p>
这在我的应用程序的第5步中变得非常混乱,我正在尝试创建一个foreach循环来遍历步骤4中列表框中的每个条目(由此XML文档填充),基于此检索其他属性信息列表框中的那个(它只是软件的名称,其他属性包括文件类型,路径等),然后用包含所有这些信息的批处理文件写一行。实际上,我不知道如何正确地格式化这个循环,同时考虑到XDocument加载的if循环。
我考虑使用here描述的第二种方法,但我不确定如何合并第三步中的用户选择元素。我只是有点困惑!
感谢您的帮助。我不善于解释这个问题,所以如果您需要更多信息/说明,请提出问题。
答案 0 :(得分:0)
您需要在public或internal范围内声明它。例如,其他方法可以访问的类的public或internal属性。看起来你并不关心这个,因为你只想使用program.cs文件。
要将其用作字段,您的代码可能会变为:
public class Program
{
XDocument document;
private void loadXML()
{
if (configFilePathTextBox.Enabled == true)
{
document = XDocument.Load(configFilePathTextBox.Text);
}
else
{
document = XDocument.Load(Application.StartupPath + @"\config.xml");
}
IEnumerable<XElement> elList =
from el in document.Descendants("software_entry")
select el;
foreach (XElement el in elList)
listBox1.Items.Add(el.Attribute("name"));
MessageBox.Show("Configuration file loaded successfully.");
}
}