我有以下代码。我需要这样做:
public void Window1()
{
InitializeComponent();
opendirectory();
}
public void opendirectory()
{
Stream checkStream = null;
Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
openFileDialog.Multiselect = false;
if ((bool)openFileDialog.ShowDialog())
{
try
{
if ((checkStream = openFileDialog.OpenFile()) != null)
{
// i need the following code to be stored as a string
string antcbatchlocation = openFileDialog.FileName;
}
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
else
{
System.Windows.MessageBox.Show("Problem occured, try again later");
}
}
然后我将在稍后的按钮事件中使用该字符串:
public void BuildButton_Click(object sender, RoutedEventArgs e)
{
System.Diagnostics.Process runantc = new System.Diagnostics.Process();
runantc.StartInfo.FileName = antcbatchlocation;
}
这个字符串作为变量可能有问题。似乎是字符串antcbatchlocation声明的局部变量。如果是这样我该如何解决呢?请帮助谢谢!
答案 0 :(得分:1)
您应该将字符串声明为Window1
类的私有成员,而不是opendirectory
方法中的本地变量。然后,在按钮单击方法中,只需检查以确保您的字符串不为空,这样您就知道用户已经完成了对话并首先选择了一个文件。
答案 1 :(得分:0)
您需要使用实例变量。这意味着它是一个类实例的本地变量(在本例中为`Window1)。这也意味着它可以被该类实例中的任何方法访问。
在您的类declreation中添加这行代码,位于public Window1(){}
构造函数的上方。
private string _BatchLocation;
然后在opendirectory()
方法内部,而不是创建本地字符串变量,将openFileDialog.FileName
设置为此实例变量。
_BatchLocation = openFileDialog.FileName;
然后您可以在点击事件处理程序中访问它...因此您的代码将如下所示:
runantc.StartInfo.FileName = _BatchLocation
;
有关详细信息,请查看此帖子:http://www.codeguru.com/csharp/csharp/cs_syntax/anandctutorials/article.php/c5829