C# 在其他方法中使用字符串

C# 在其他方法中使用字符串,c#,wpf,string,C#,Wpf,String,我有以下代码。我需要这样做: public void Window1() { InitializeComponent(); opendirectory(); } public void opendirectory() { Stream checkStream = null; Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog(); openF

我有以下代码。我需要这样做:

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被声明为局部变量。如果是这样的话,我应该如何着手修复它?请帮忙,谢谢

您应该将字符串声明为
Window1
类的私有成员,而不是
opendirectory
方法中的局部变量。然后,在您的按钮单击方法中,只需检查以确保字符串不为null,这样您就知道用户已经通过了您的对话框并首先选择了一个文件。

您需要使用一个实例变量。这意味着它是类实例的局部变量(在本例中为“Window1”)。这也意味着该类实例中的任何方法都可以访问它

在类declreation中添加这行代码,就在
public Window1(){}
构造函数的正上方

private string\u BatchLocation

然后在
opendirectory()
方法中,不要创建本地字符串变量,而是将
openFileDialog.FileName
设置为此实例变量

\u BatchLocation=openFileDialog.FileName

然后,您可以在单击事件处理程序中访问它。。。因此,您的代码如下所示:

runantc.StartInfo.FileName=_BatchLocation

有关更多信息,请查看此帖子: