Вы не можете просто создать новый экземпляр вашей основной формы (как было предложено, и ожидать, что на работу, вам нужна фактическая ссылка на MainForm, которые были созданы, чтобы помочь вам увидеть логику участвующей.
Создайте новый проект Winforms. В стандартном Form1 добавьте текстовое поле и кнопку. Теперь добавьте новую форму в это приложение (вы можете оставить ее с именем по умолчанию для формы 2. В эту форму добавьте TextBox (вызов это myTextBox) и кнопку.
Теперь вернитесь к первой форме и дважды нажмите кнопку для доступа к cl ick обработчик в коде. Добавьте следующее:
Нажмите f5 и нажмите кнопку, и вы увидите новую форму 2. Пока все хорошо.
Теперь откройте код для Form2 и добавьте следующий код, чтобы он заканчивает тем, как это:
Public Class Form2
Private frm As Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
frm.TextBox1.Text = myTextBox.text
End Sub
End Class
сборки, нажмите f5 и нажмите кнопку на Form1, в новом form2 ввести текст в текстовом поле и нажмите кнопку, вы получите свое нулевое ссылочное исключение. Причина, по которой вы это понимаете, состоит в том, что в настоящее время частное поле frm inForm2 ссылается на Nothing.
Теперь откройте код в Form2 и добавить конструктор и следующий код так, чтобы он заканчивает тем, как это:
Public Class Form2
Private frm As Form1
Public Sub New(byval frm1 As Form1)
'first we should make sure that we have a parameter to play with
If Not IsNothing(frm1) Then
frm = DirectCast(frm1,Form1)
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
frm.TextBox1.Text = myTextBox.text
End Sub
End Class
Наконец вернуться к своей первой форме ButtonClick обработчика и изменить код немного так что это выглядит так;
Dim frm as New Form2(Me)
frm.Show
Построить и запустить приложение, теперь при вводе текста в текстовое поле в form2 и нажмите на кнопку появится в текстовом поле в Form1.
Причина, по которой это происходит, состоит в том, что вы передали фактическую ссылку на форму1, которая была первоначально создана, когда приложение начало формировать2. Путем литья этой ссылки на ваше частное поле, используемое для представления form1 в form2, вы можете использовать его для правильного обращения к вещам в форме1. Это очень простая концепция, но которую вы должны изучить, прежде чем вы будете делать программирование прогресса.
С новым я получаю StackOverflow ошибка – DigitalDulphin
Не врезаться в настоящее время, но это не добавляет ничего к ListBox – DigitalDulphin
сделать одну вещь добавить ListBox как 'Public Shared 'Member.. then try..Reference http://vbcity.com/forums/t/6364.aspx –