Обновить форму родительских окон из дочерних окон

c# forms

5272 просмотра

2 ответа

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

private void btnSave_Click(object sender, EventArgs e)
    {
        BusinessClient bc = new BusinessClient();
        bc.CompanyName = txtCompanyName.Text;
        bc.PointOfContact = txtPointOfContact.Text;
        bc.Address1 = txtAddressOne.Text;
        bc.Address2 = txtAddressTwo.Text;
        bc.City = txtCity.Text;
        bc.State = cbxState.Text;
        bc.Zip = txtZip.Text;
        bc.Phone = txtPhone.Text;
        bc.Email = txtEmail.Text;

        BusinessClientMgr bcMgr = new BusinessClientMgr();
        bcMgr.StoreNewBusinessClient(bc);

        AfterTheSave();

        AssignmentForm assignForm = new AssignmentForm();
        assignForm.Refresh();

        this.Close();
    }

Здесь я пытаюсь сохранить данные, закрыть форму дочерних окон и обновить форму родительских окон, получив новые данные для отображения. Я что-то здесь упускаю? Пока я понимаю, что дочерняя форма окна не должна контролировать родительский. Если подумать, ребенок просит родителей обновить информацию.

Автор: Marc Источник Размещён: 08.11.2019 10:54

Ответы (2)


1 плюс

Решение

Ответ Анируддхи Вармы правильный.

У вас есть 2 формы: родитель и ребенок.

Родителю мы покажем дочернюю форму, где вам нужно:

Form2 child = new Form2();
child.Show(this); //We pass through the Parent instance to Child

И, кроме того, мы собираемся объявить открытый метод для редактирования любых ваших элементов управления формы, например:

public void SetText(string text)
{
    parentTextbox.Text = text;
}

После этого переходим в детскую форму. В этом мы собираемся объявить над формой событие «FormClosing» или в кнопку, чтобы закрыть форму следующий код:

 Form1 parent = (Form1) Owner;
 parent.SetText(childTextbox.Text);

При этом мы собираемся вернуть экземпляр Parent в Child, а затем вызвать метод SetTex, где мы передаем через параметр наш текст. Оглядываясь на первую форму, мы получим текстовое поле Родителя, обновленное текстом из детской формы.

Автор: Daviex94 Размещён: 20.08.2016 10:15

0 плюса

Код родительской формы:

var child = new ChildForm();
child.Show(this);

Код дочерней формы:

var myParent = (MainForm)this.Owner;
myParent.ParentMethod();

MainFormэто ваша родительская форма, и ChildFormэто новая форма, которую вы хотите отобразить.

Автор: Aniruddha Varma Размещён: 20.08.2016 05:50
Вопросы из категории :
32x32