2013-06-14 5 views
0

Может ли кто-нибудь предоставить мне пример, пожалуйста?VB.net Передача данных между двумя детьми mdi

Сценарий:

**FORM1** = MDIPARENT 
FORM2 = CHILD 
FORM3 = CHILD 

FORM2 открывается меню на MdiParent FORM2 имеет текстовое поле - CompanyNameText рядом с этим текстовое поле есть кнопка, которая открывает FORM3, содержащий список

Что Я пытаюсь добиться, чтобы пользователь выбрал название компании из списка в FORM3, и их выбор будет отображаться в FORM2'sCompanynametextbox

Я пробовал: -

FORM3:- 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim formChild2 As AllocateCallBack = DirectCast(Me.MdiParent.MdiChildren(1), AllocateCallBack) 
    formChild2.ReceiveValue(SelectTextBox.Text) 
    End Sub 

Form2: -

Public Sub ReceiveValue(ByVal value As String) 
    CompanyNameTextBox.Text = value.ToString 
    Me.Activate() 
    Me.Refresh() 
    End Sub 

Но я получаю сообщение Nullreferenceexception` был необработанным.

Я подтвердил, что значение SelectTextBox имеет значение, указанное выше.

Помогите пожалуйста

ответ

0

Вы можете добавить этот код кнопки в Form2, открывающие form3.

Dim frm3 As New FORM3() 

If frm3.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then 
    Me.DoWhatYouWantWithThisValue(frm3.SelectTextBox.Text) 
End If 

Когда пользователь выбирает компанию из списка в form3 необходимо установить:

Me.DialogResult = Windows.Forms.DialogResult.OK 
+0

То фантастическое, спасибо за быстрый отклик на последний вопрос. Я хотел бы прикрепить форму 3 в форму 1, однако я не могу сохранить форму 3 в качестве третьего ребенка, так как im теперь получает эту ошибку: - Форма, которая не является формой верхнего уровня, не может отображаться как модальное диалоговое окно. Удалите форму из любой родительской формы перед вызовом showDialog. – JeniferLips

+0

Я ответил с помощью простейшего решения вашей проблемы: если вы используете ShowDialog, нет необходимости подключать FORM3 к FORM1. Если вы хотите, чтобы FORM2 и FORM3 всегда открывались, есть еще одно решение, но это требует гораздо больше работы. – tezzo