Имя отсутствует в текущем контексте C#

116
16 ноября 2021, 22:00

Есть форма FormData и форма FormResult. На первой есть textBox и Button.Обе формы в одном namespace. На первой форме у кнопки есть обработчик:

private void resButtonClick(object sender, EventArgs e)
{
        string path = textBox.Text;
        FormResult res = new FormResult();
        res.Show(); 
}

В namespace есть класс DataClass для обработки .xml файла, содержащий метод, принимающий путь из textBox. Этот метод мы вызываем для заполнения таблици на форме FormResult(метод читает данные из файла и по ним строит DataGridView):

DataClass class = new DataClass();
BindingList<Row> data = new BindingList<Row>();
foreach (Row row in class.MakeRows(path))
{
    data.Add(row);
}

При вызове метода происходит ошибка: Ошибка CS0103: Имя "path" отсутствует в текущем контексте.

Обработчик private, а значит путь не виден другой форме. Решил попробовать вместо path использовать textBox.Text, но для этого что надо создать конструктор формы (FormResult) и передать ему ссылку на первую форму, используя this? Может и не так, но я попробовал.

Answer 1

Можно попробовать передать параметр через конструктор.

В FormResult сделать так:

private string _path;
. . .
public FormResult(string path)
{
    . . . // какой-то стандартный код из шаблона.
    this._path = path; 
}

В FormData:

string path = textBox.Text;
FormResult res = new FormResult(path);
res.Show();

Но, вообще это не совсем удачный вариант. На будущее, лучше задействовать паттерны наподобие MVP или MVVM. Но, для простой программки сойдёт.

READ ALSO
datagridview позиция слов

datagridview позиция слов

Подскажите, пожалуйста, как вывести каждую позицию слова в отдельному столбце грида? Вывожу позиции так:

258
Почему не происходит запись в локальную базу данных?

Почему не происходит запись в локальную базу данных?

У меня есть программа, которая парсит данные с сайта и сохраняет их по одному экземпляру в файлы f1json , f2

215
Получить GameObject, если он не активен

Получить GameObject, если он не активен

Всем приветУ меня есть на одной линии машина и три триггера, идущих друг за другом

190
Не получается записать текст в файл С#

Не получается записать текст в файл С#

Не записывает текст в файл=( Подскажите, пожалуйста, что не так?

138