используя строку в другом методе - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть следующий код. мне нужно сделать это:

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 ]

1 голос
/ 22 февраля 2011

Вы должны объявить вашу строку как закрытый член вашего класса Window1, а не как локальную переменную в вашем методе opendirectory.Затем, в вашем методе нажатия кнопки, просто убедитесь, что ваша строка не пуста, чтобы вы знали, что пользователь прошел через ваш диалог и сначала выбрал файл.

0 голосов
/ 22 февраля 2011

Вам необходимо использовать переменную экземпляра. Это означает, что это переменная, которая является локальной для экземпляра класса (в данном случае `Window1). Это также означает, что он доступен для любого метода внутри этого экземпляра класса.

Добавьте эту строку кода в вашем объявлении класса, чуть выше конструктора public Window1(){}.

private string _BatchLocation;

затем внутри метода opendirectory() вместо создания локальной строковой переменной установите openFileDialog.FileName для этой переменной экземпляра.

_BatchLocation = openFileDialog.FileName;

затем вы можете получить доступ к этому в обработчике события click ... таким образом, ваш код будет выглядеть так:

runantc.StartInfo.FileName = _BatchLocation;

Посмотрите этот пост для получения дополнительной информации: http://www.codeguru.com/csharp/csharp/cs_syntax/anandctutorials/article.php/c5829

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...