Значения не заполняются в форме

#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 этот код не решает проблему? если кнопка поиска находится в форме, почему вы просто не ссылаетесь на саму форму? это больше похоже на проблему кодирования, чем на что-либо еще.