Способ обновить страницу формы с другой страницы формы? - PullRequest
1 голос
/ 22 января 2012

У меня есть приложение Win form (VS 2010 / C #), и я пытаюсь выяснить, как обновить страницы без кнопки обновления. В настоящее время я могу обновить страницу (в основном, чтобы сбросить привязки данных) с помощью кнопки обновления, содержащей код, похожий на этот (this.refresh (), похоже, не работает по некоторым причинам):

this.Hide();
AccountSettings AS = new AccountSettings();
AS.ShowDialog();

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

Итак, если коротко, есть ли способ обновить страницу формы с другой страницы формы? Например, когда я нажимаю кнопку Сохранить или закрываю дочернее окно.

Ответы [ 2 ]

3 голосов
/ 22 января 2012

Возможно передать исходную форму в качестве аргумента второй форме:

Form2 frm2 = new Form2(this);

И в форме 2:

Form1 frm1;
public Form2(Form1 frm1)
{
    InitializeComponent();
    this.frm1 = frm1;
}

А затем в форме 2:

frm1.Update();
0 голосов
/ 22 января 2012

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

private void ResetData()
    {
      //code to update settings
    }

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

Form2 dlg = new Form2();
if (dlg.ShowDialog == System.Windows.Forms.DialogResult.OK) {
    //code that updates your data
    ResetData();
}

Если это не диалог, есть несколько вещей, которые вы можете сделать, и то, как ваше приложение работает, сделает один метод лучше других.Вот только один пример.

Если для ваших изменений вам не нужен доступ к данным из другого окна для обновления, вы можете обработать закрытое событие формы, которую вы создаете.

Создатьпеременная уровня класса для хранения открытой формы, так что вы также можете удалить созданные вами обработчики событий:

private Form2 frm;

Чтобы создать экземпляр формы и добавить обработчик события закрытия:

    frm = new Form2();
    frm.FormClosed += OnForm2Closed;  

Метод обработчика событий:

private void OnForm2Closed(object sender, FormClosedEventArgs e)
{
    ResetData();
    frm.FormClosed -= OnForm2Closed;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...