значение общедоступной строки всегда равно null

#c# #string #winforms #public

#c# #строка #winforms #общедоступный

Вопрос:

Я начал изучать C # несколько дней назад, и у меня возникла проблема с общедоступными строками, в настоящее время я пытаюсь написать программу, которая копирует и заменяет файлы для практики, но у меня проблема с общедоступными строками, сколько бы я ни пытался изменить код, я не мог этого понятьсам, поэтому я пришел сюда за помощью

Что я делаю не так?

Вот код:

экстрактор пространства имен { общедоступный частичный класс Form1 : Form { общедоступная строка s { get; set; } общедоступная строка sSelectedPath { get; set; } общедоступная строка beckup { get; set; } общедоступная Form1() { InitializeComponent(); } private void direc_Click(отправитель объекта, EventArgs e) { FolderBrowserDialog fbd= new FolderBrowserDialog(); fbd.Описание = "Выберите папку";

         if (fbd.ShowDialog() == DialogResult.OK)
        {
            string sSelectedPath = fbd.SelectedPath;
        }

    }

    private void choof_Click(object sender, EventArgs e)
    {
        OpenFileDialog choofdlog = new OpenFileDialog();
        choofdlog.Filter = "All Files (*.*)|*.*";
        choofdlog.FilterIndex = 1;
        choofdlog.Multiselect = true;

        if (choofdlog.ShowDialog() == DialogResult.OK)
        {
             string s = choofdlog.FileName;
        }

    }

    private void button3_Click(object sender, EventArgs e)
    {
        ReplaceFile( s, sSelectedPath, beckup);
    }

    public static void ReplaceFile(string FileToMoveAndDelete, string FileToReplace, string BackupOfFileToReplace)
    {
        File.Replace(FileToMoveAndDelete, FileToReplace, BackupOfFileToReplace, false);

    }

    private void button1_Click(object sender, EventArgs e)
    {
        FolderBrowserDialog fbb = new FolderBrowserDialog();
        fbb.Description = "Select a folder";

        if (fbb.ShowDialog() == DialogResult.OK)
        {
            string beckup = fbb.SelectedPath;
        }
    }
}
  

Комментарии:

1. В соответствии с рекомендациями — вы должны использовать регистр Pascal при именовании свойств — msdn.microsoft.com/en-us/library/fzcth91k(v=vs.71).aspx

Ответ №1:

 if (fbd.ShowDialog() == DialogResult.OK)
{
        string sSelectedPath = fbd.SelectedPath;
}
 

Здесь вы объявляете новую переменную, используя string ключевое слово. Это не установка свойства. Просто удалите string . Например.

 if (fbd.ShowDialog() == DialogResult.OK)
{
        sSelectedPath = fbd.SelectedPath;
}
 

Ответ №2:

Ваша ошибка здесь :

 if (choofdlog.ShowDialog() == DialogResult.OK)
{
    string sSelectedPath = choofdlog.FileName;
}
 

Вы используете локальную переменную, а не переменную-член. Итак, напишите :

 if (choofdlog.ShowDialog() == DialogResult.OK)
{
    sSelectedPath = choofdlog.FileName;
}
 

Или, лучше, если вы не хотите ошибиться, используйте this. при записи переменной-члена или метода :

 if (choofdlog.ShowDialog() == DialogResult.OK)
{
    this.sSelectedPath  = choofdlog.FileName;
}
 

Ответ №3:

Заменить

  string s = choofdlog.FileName;
 

с

   s = choofdlog.FileName;