Передача значения из формы диалога в основную форму
Возможный дубликат:
Как передать объект из формы1 в form2 и обратно в form1?
Я использую для передачи переменных между формами окон, просто передавая их в качестве параметра.
Теперь у меня есть форма, которая уже открыта (пусть ее называют FormMain
), а другая форма должна действовать как диалог (FormTask
). Пользователь не может взаимодействовать с основной формой, пока не заполнит информацию на FormTask
. FormTask
просто содержит одно текстовое поле, и значение этого текстового поля должно быть возвращено в FormMain
и отслеживаться как переменная. FormTask
требуется параметр exerciseType
. Когда FormTask
открывается, он проверяет значение этого параметра и соответственно устанавливает значение по умолчанию для текстового поля. Это уже работает, я просто не знаю, как вернуть значение строки в уже открытый MainForm
.
Кажется, что эти диалоги могут возвращать DialogResults
, и это не то, что мне нужно. Я тоже не слишком опытный, и я бы предпочел не шутить, чтобы создать свой собственный диалог.
FormMain:
FormTask formTask = new FormTask(exerciseType);
formOpgaveInvoker.ShowDialog();
FormTask:
private void button1_Click(object sender, EventArgs e)
{
string opgave = textBoxOpgave.Text;
// return string value to MainForm here
}
Ответы
Ответ 1
Создать публичное свойство в FormTask
public string Opgave { get {return textBoxOpgave.Text;}}
И проверьте его после ShowDialog();
FormTask formTask = new FormTask(exerciseType);
formOpgaveInvoer.ShowDialog();
formOpgaveInvoer.Opgave; // here it is
Ответ 2
Самый простой способ сделать это - добавить публичное свойство в класс формы, чтобы вернуть строку.
public string opgave
{
get;
private set;
}
Назначьте это свойство, когда ваш диалог закроется, а затем прочитайте свойство из кода, который называется ShowDialog()
:
private void button1_Click(object sender, EventArgs e)
{
opgave = textBoxOpgave.Text;
}
...
FormTask formTask = new FormTask(exerciseType);
formOpgaveInvoker.ShowDialog();
DoSomething(formTask.opgave);
Ответ 3
Формы - это просто нормальные классы. Это означает, что вы можете создавать в них свойства.
Итак: создайте свойство и присвойте ему значение.
Ответ 4
Добавьте свойство к FormTask
например String1
как
public string String1 {get; set;}
Задайте значение String1 в button1_Click
, например,
Вы можете получить доступ к этому свойству в MainForm, например
FormTask formTask = new FormTask(exerciseType);
formOpgaveInvoer.ShowDialog();
string str = formTask.String1;