Подтвердить что ты не робот

Передача значения из формы диалога в основную форму

Возможный дубликат:
Как передать объект из формы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
}
4b9b3361

Ответ 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;