对于c#,变量传递不起作用
我是业余爱好者。我想把变量传递给下一个私有类Exec。但该值为空。此源存在问题。请教我对于c#,变量传递不起作用,c#,C#,我是业余爱好者。我想把变量传递给下一个私有类Exec。但该值为空。此源存在问题。请教我 我想用类表单获取所有文件夹路径 然后,我想通过以下处理循环文件夹中的“xml文件” 这是我的课程表: public partial class form : Form { public form() { InitializeComponent(); } private string XmlFolderPath; private string XsltF
课程表
:
public partial class form : Form
{
public form()
{
InitializeComponent();
}
private string XmlFolderPath;
private string XsltFilePath;
public string XmlFolderPath1 => XmlFolderPath;
public string XsltFilePath1 => XsltFilePath;
//XMLフォルダ選択
private void ButtonXml_Click(object sender, EventArgs e)
{
FolderBrowserDialog dr = new FolderBrowserDialog
{
Description = "Xml ファイルが格納されたフォルダを選択してください"
};
DialogResult result = dr.ShowDialog();
if (result == DialogResult.OK)
{
XmlFolder.Text = dr.SelectedPath;
XmlFolderPath = XmlFolder.Text;
}
}
//XSLTファイル選択
private void ButtonXslt_Click(object sender, EventArgs e)
{
OpenFileDialog file = new OpenFileDialog
{
Title = "XSLT ファイルのみを選択してください",
Filter = "Xslt File (*.xslt)|*.xslt|All files (*.*)|*.*"
};
DialogResult result = file.ShowDialog();
if (result == DialogResult.OK)
{
XsltFile.Text = file.FileName;
XsltFilePath = XsltFile.Text;
}
}
//キャンセルボタン+ESC
private void Button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void FolderSelect_Load(object sender, EventArgs e)
{
}
private void RunHtml_Click(object sender, EventArgs e)
{
this.Enabled = true;
MessageBox.Show(XmlFolderPath);
Exec run = new Exec();
run.RunHTML();
}
}
private class Exec: form
{
public void RunHTML()
{
form form = new form();
MessageBox.Show(form.XmlFolderPath1);
MessageBox.Show(form.XsltFilePath1);
}
}
问题在于
Exec
类中的这一行:
form form = new form();
在这一行中,您将看到new
关键字。这意味着您正在创建一个新实例。但您需要从已有的实例中获取XmlFolderpath
一种可能的解决方案是传入实例。首先,修改Exec类:
public void RunHTML(form existingInstance)
{
MessageBox.Show(existingInstance.XmlFolderPath1);
MessageBox.Show(existingInstance.XsltFilePath1);
}
现在修改调用者以传递表单:
Exec run = new Exec();
run.RunHTML(this);
现在将现有表单传递到RunHTML方法中,该方法现在可以读取这些值
还有其他方法可以做到这一点——例如,您可以将表单传递到Exec的构造函数中——您可以自由选择在您的情况下最适合的方法。但是上面的答案应该能让你继续。private class Exec:form{public void RunHTML(){form form=new form();MessageBox.Show(form.XmlFolderPath1);MessageBox.Show(form.XsltFilePath1);}}不要在注释中添加代码。而是编辑你的问题。除此之外:什么是空的?你能对你的问题说得更具体一点吗?非常感谢。我解决了。我很抱歉。请教我。如果我使用accession[public class Exec:form],我能以智能的方式编写代码吗?