Проблема обновления формы в c # - PullRequest
1 голос
/ 09 июля 2011

У меня есть две формы формы A и B.Когда пользователь нажимает кнопку в форме A, форма B будет работать, но форма A уже открыта. Пользователь может установить данные в форме B. Когда пользователь нажмет кнопку «Добавить» в форме B, данные перейдут в форму A, и текстовое поле в форме A будет установленоданные с проходными данными.Я получил пропущенные данные, но текстовое поле формы А не заполнено данными. Как я могу это сделать?

В форму B добавить кнопку

Ответы [ 3 ]

3 голосов
/ 09 июля 2011

В FormB определите приватное поле, в котором хранится ссылка на FormA, и создайте пользовательский конструктор для передачи ссылки.

public FormB(FormA form) {
    this.m_FormA = form;
} 

private FormA m_FormA;

При отображении FormB из FormA передайте ссылку.

using (FormB form = new FormB(this)) {
    form.Show();
}

Когда вы будете готовы обновить FormA, вызовите функцию-член.

this.m_FormA.FillEmployeeGrid(empAdd);

Как только все это заработает, вам не нужно будет вызывать Refresh () для обновления пользовательского интерфейса.если что-то не будет блокировать поток пользовательского интерфейса (в любом случае вы можете захотеть сделать что-то асинхронное).

2 голосов
/ 09 июля 2011

Когда вы вызываете NewEmployee emp = new NewEmployee(); в форме b, вы создаете ссылку на НОВЫЙ экземпляр ФОРМЫ A (который является 'NewEmployee', верно?), Но вы фактически никогда НЕ ПОКАЗЫВАЕТЕ этот экземпляр.Когда вы вызываете emp.FillAddressGrid(empAdd);, вы действуете на скрытом экземпляре, а не на том, который вы видите.

Когда вы создаете свой экземпляр формы B, вам нужно передать ссылку на форму B, например:

    FormB formB = new FormB();
    formB.Owner = this;
    fromB.show();

Это даст вам возможность позднее позвонить:

((NewEmployee)Owner).FillAddressGrid(empAdd);

из формы B.

0 голосов
/ 09 июля 2011

так что вы получаете данные из формы B в форму A, Сохраните полученные данные в одной переменной и присвойте эту переменную текстовому полю. лайк, TextBox1.Text = v.tostring ();

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