2016-08-20 8 views
0

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

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(); 
    } 

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

+0

Вы пытались найти решение? На этот вопрос ответили тысячи раз. –

+0

'assignForm.Refresh()' не имеет ничего общего с данными формы, это просто перерисовывает форму. –

+0

@BastianThiede Я искал решения, но ни один не был найден, потому что все они связаны с ASP.NET, которые я не искал. – Marc

ответ

0

Ответа на этот вопрос Aniruddha Varma.

У вас есть 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); 

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

+0

Он работает - спасибо за разъяснение поста Анирудды. – Marc

0

Родитель код формы:

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

Ребенок код формы:

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

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

+0

Пробовал это - не работал и не обновлял родительскую форму с новыми данными. – Marc

+0

@Marc 'ParentMethod' - это метод в родительской форме. Вы можете вызвать этот метод из дочерней формы и передать аргумент (например, 'int'), а' ParentMethod' может обновить его форму. –

+0

@Marc Какая ошибка (ы) бросила? Как отметил Ракитич в комментарии, метод «Обновить» не связан с значениями в форме. –

Смежные вопросы