在其他方法中使用string

时间:2011-02-22 04:28:56

标签: c# wpf string

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

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声明的局部变量。如果是这样我该如何解决呢?请帮助谢谢!

2 个答案:

答案 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