Ссылка на другую переменную - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь сделать какое-то минимальное приложение для себя, и у меня есть небольшая проблема с выбранным путем. У меня есть следующий код:

  public partial class MainWindow : Window
{


    public MainWindow()
    {
        InitializeComponent();
    }               
    private void FilesCountNumberShow_button_Click(object sender, RoutedEventArgs e)
    {
        // Try to count nu,ber of files in folder
        int fCount = Directory.GetFiles(count_path, "*", SearchOption.TopDirectoryOnly).Length;
        FilesCountNumber_Label.Content = "Files in folder: " + fCount;


    }

    private void SelectFolderPath_button_Click(object sender, RoutedEventArgs e)
    {
        // These code is for open File Dialog and choose older path as count_path
        var SelectFolderPath_Dialog = new WinForms.FolderBrowserDialog();
        if (SelectFolderPath_Dialog.ShowDialog() == WinForms.DialogResult.OK)
        {
            string count_path = SelectFolderPath_Dialog.SelectedPath;
            MessageBox.Show(count_path);

        }

    }
}

}

Как я могу ссылаться на переменную count_path в

 int fCount = Directory.GetFiles(count_path, "*", SearchOption.TopDirectoryOnly).Length;

У меня есть информация, что она не существует (я думаю, это переменная locla в SelectFolderPath_button_Click правильно? Как я могу установить ее глобально?

Я делаю что-то такое. Я добавляю string count_path { get; set; } туда:

 public partial class MainWindow : Window
{
     string count_path { get; set; }

    public MainWindow()
    {
        InitializeComponent();
    }  

и изменить

 private void SelectFolderPath_button_Click(object sender, RoutedEventArgs e)
    {
        var SelectFolderPath_Dialog = new WinForms.FolderBrowserDialog();
        if (SelectFolderPath_Dialog.ShowDialog() == WinForms.DialogResult.OK)
        {
            count_path = SelectFolderPath_Dialog.SelectedPath;

            MessageBox.Show(count_path);

        }

    }

Это хорошее решение или должно быть сделано иначе?

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Сохранить выбранный путь в приватном поле и проверить, что он был установлен:

public partial class MainWindow : Window
{
    private string count_path;

    public MainWindow()
    {
        InitializeComponent();
    }

    private void FilesCountNumberShow_button_Click(object sender, RoutedEventArgs e)
    {
        if (string.IsNullOrEmpty(count_path))
        {
            MessageBox.Show("You must select a folder first!");
        }
        else
        {
            // Try to count nu,ber of files in folder
            int fCount = Directory.GetFiles(count_path, "*", SearchOption.TopDirectoryOnly).Length;
            FilesCountNumber_Label.Content = "Files in folder: " + fCount;
        }
    }

    private void SelectFolderPath_button_Click(object sender, RoutedEventArgs e)
    {
        // These code is for open File Dialog and choose older path as count_path
        var SelectFolderPath_Dialog = new WinForms.FolderBrowserDialog();
        if (SelectFolderPath_Dialog.ShowDialog() == WinForms.DialogResult.OK)
        {
            count_path = SelectFolderPath_Dialog.SelectedPath;
            MessageBox.Show(count_path);
        }
    }
}
0 голосов
/ 16 июня 2019
  //add assembly reference System.Windows.Forms
   private void SelectFolderPath_button_Click(object sender, RoutedEventArgs e)
      {
           using (var SelectFolderPath_Dialog = new   System.Windows.Forms.FolderBrowserDialog())
           {
                if (SelectFolderPath_Dialog.ShowDialog() ==   System.Windows.Forms.DialogResult.OK)
                   {
                       string count_path = SelectFolderPath_Dialog.SelectedPath;
                   MessageBox.Show(count_path);

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