#vb.net #winforms
#vb.net #winforms
Вопрос:
Использование VB.Net (Приложение для Windows)
В форме (называемой FirstForm) я использую текстовое поле, кнопку добавления формы, кнопку поиска.
Когда я нажимаю кнопку add-form, она выдает новую форму (такую же, как FirstForm)
Код для добавления новой формы
Private Sub btnadd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnadd.Click
Dim SecondForm As New FirstForm
SecondForm.Show()
End Sub
Код кнопки поиска
Private Sub Search_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Search.Click
If FirstForm.Focus = True Then
FirstForm.textbox1.Text = gridview1.Rows(crRow).Cells("code").Value.ToString().Trim()
Else
Dim SecondForm As New FirstForm
SecondForm.textbox1.Text = gridview1.Rows(crRow).Cells("code").Value.ToString().Trim()
End If
End Sub
Приведенный выше код работает, но если я нахожусь во второй форме, когда нажимаю кнопку поиска и выбираю значение, тогда значение отображается в текстовом поле первой формы, оно не отображается в текстовом поле второй формы.
Если отображается вторая форма, выбранное значение должно отображаться в текстовом поле второй формы, а не в текстовом поле первой формы.
Как решить эту проблему.
Необходимо Vb.net Справка по коду
Комментарии:
1. Можете ли вы показать код, который вызывается кнопкой поиска?
2. можете ли вы показать какой-нибудь код для кнопки поиска?? если вы находитесь во второй форме, она должна работать там .. если только она не статична или что-то в этом роде..
3. Я парень из C #, поэтому не уверен, что вы делаете, но вместо Form1. Фокус попробуйте Form1. Активен. Это может решить проблему.
Ответ №1:
Используйте Me
ссылочную переменную, которая содержит ссылку на текущую форму.
Dim frm As FirstForm
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
If IsNothing(frm) OrElse frm.IsDisposed Then
frm = New FirstForm
End If
frm.Show()
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Me.textbox1.Text = gridview1.Rows(crRow).Cells("code").Value.ToString().Trim()
End Sub
Комментарии:
1. Спасибо за ваш ответ, я получаю сообщение об ошибке как «Необработанное исключение типа ‘System. В системе произошло исключение StackOverflowException. Windows. Forms.dll »
2. Вы создаете два или более экземпляров FirstForm и хотите иметь (доступ) к элементам текущего объекта. Вот почему я должен.
3. Спасибо за ваш ответ, кнопка поиска (кнопка 2, как вы упомянули в своем исходном коде) открывается в новой форме с сеткой. Я уже упоминал в исходном коде, как это «FirstForm.textbox1.Text = gridview1.Rows(crRow). Ячейки («код»). Значение. toString().Trim()» . Теперь, как я могу дать мне.textbox1.Text
Ответ №2:
Использование «me» не решит проблему?? почему вы ссылаетесь на форму статическим образом?
Private Sub Search_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Search.Click
textbox1.Text = gridview1.Rows(crRow).Cells("code").Value.ToString().Trim()
End Sub
Комментарии:
1. @Gopal этот код не решает проблему? если кнопка поиска находится в форме, почему вы просто не ссылаетесь на саму форму? это больше похоже на проблему кодирования, чем на что-либо еще.