Каков наилучший способ передачи переменных между графическим интерфейсом в Winforms C #? - PullRequest
0 голосов
/ 11 ноября 2010

У меня есть программа WinForms с 2 GUI.Я работаю с одним GUI и открываю другой GUI, используя

        var gui = new FormGui("SomeVar", someOthervar);
        gui.ShowDialog();

Я использую ShowDialog() или Show() в зависимости от того, что мне нужно получить.Когда я закончу, я бы хотел передать результаты (иногда это 2 строки, иногда больше) в Mother GUI, который называется Child GUI.

Какой лучший способ сделать это?Я думал об использовании глобальных переменных, но не уверен, что это лучший подход?

Ответы [ 4 ]

4 голосов
/ 11 ноября 2010

Вы можете создать свойства на FormGui и установить их в форме. Когда вы закончите с формой, вы можете получить эти свойства из вашей ссылки на форму:

var gui = new FormGui("SomeVar", someOthervar);
gui.ShowDialog();
var result = gui.Result;

РЕДАКТИРОВАТЬ: Относительно вашего комментария:

Скажите, что у вашей дочерней формы есть кнопка или что-то, с чем пользователь может взаимодействовать. Или, если есть кнопка закрытия, они нажимают:

private void buttonCloseClick(object sender, EventArgs e)
{
   this.Result = new ResultObject()....
}

РЕДАКТИРОВАТЬ # 2 Относительно вашего второго комментария:

Да, в вашем классе FormGui вам нужно определить объект с именем Result:

public partial class FormGui : Form
{
   public ResultObject Result {get;set;}
}

ResultObject это просто то, что я придумываю. Дело в том, что вы контролируете FormGui, так что вы можете добавить любое свойство, которое хотите, и затем получить к нему доступ к FormGui объекту.

1 голос
/ 11 ноября 2010

В класс FormGui можно добавить свойство, содержащее результаты, которые вы хотите использовать в родительской форме.

Также вы можете использовать результат ShowDialog() для передачи информации обратно.- хотя это ограниченные значения перечисления DialogResult .

0 голосов
/ 13 ноября 2010

Ответа BFree достаточно для вашей задачи

Я предлагаю простой способ добавить свойства ко всем формам

Сделайте новый класс расширенным с помощью System.Windows.Form

public class Form : System.Windows.Forms.Form
{
   //add properties
}

Проверьте свои свойства в ваших формах

0 голосов
/ 11 ноября 2010

Вы можете вызвать с ShowDialog в дочернем окне, использовать новое открытое свойство для установки результата, и когда вы закрываете диалоговое окно, родительский графический интерфейс должен видеть результат в следующей строке кода.

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