В .NET (C #), как ссылаться на переменную в одном WinForm от дочернего WinForm? - PullRequest
0 голосов
/ 20 июня 2009

Учитывая публичное создание экземпляра класса в WinForm1, я пытаюсь открыть WinForm2, и поиск паролей БД выполняет запрос, результаты которого я хотел бы использовать для заполнения экземпляра класса в WinForm1. Однако я не могу понять, как получить доступ к экземпляру класса в WinForm1 из WinForm2.

Экземпляр класса в WinForm1 закодирован как частный член / публичное свойство:

private theClass _classInstance;
public theClass ClassInstance {get; set;}

Я вызываю WinForm2 как модальную форму.

WinForm2 wf2 = new WinForm2();
wf2.ShowDialog(this);

Есть ли способ, которым я могу ссылаться на ClassInstance (изменяя его значение) в то время как в wf2 ??

Ответы [ 3 ]

3 голосов
/ 20 июня 2009

Вы можете передать ссылку на родительскую форму в конструкторе или как свойство дочерней форме или сохранить ссылку в поле static.

class WinForm2 : Form {
     WinForm1 parentForm;
     public WinForm2(WinForm1 parentForm) {
         this.parentForm = parentForm;
         // ....
     }

     // Use `parentForm.ClassInstance` here.
}


WinForm2 wf2 = new WinForm2(this);
wf2.ShowDialog(this);

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

0 голосов
/ 20 июня 2009

в WinForm2 (улучшено, чтобы избежать возможных сбоев во время выполнения, на которые указывал Мерад):

WinForm1 form1 = this.Owner as WinForm1;
if (form1 != null) {
    theClass classInstance = form1.ClassInstance;
    // ...
}

Свойство Owner возвращает форму, которая была передана ShowDialog(IWin32Window window)

0 голосов
/ 20 июня 2009

Вы можете создать конструктор в WinForm2, который принимает WinForm1 при создании экземпляра.

public partial class WinForm2 : Form
{
    public WinForm2()
    {
        InitializeComponent();
    }

    Form parentForm
    internal WinForm2(Form parent)
        : this()
    {
        parentForm = parent
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...