Как использовать значение из другой формы, которая имеет тот же родительский - PullRequest
0 голосов
/ 25 января 2019

В настоящее время я работаю с 3 формами:

  • Одна - это "фон" на весь экран с кнопками, которые служат родителем для обеих других форм
  • Вторая -заполненный DataGridView и кнопкой, которая открывает третий
  • Третий имеет несколько текстовых полей

Цель состоит в том, чтобы выбрать строку во втором, затем нажать кнопку иоткройте третий, который использует команду SQL для запроса информации, используя первое значение в представлении таблицы данных как WHERE

Я хотел бы использовать в третьей форме SecondForm.TheDataGridView.SelectedCells(0).Value.ToString, но, похоже,быть вне индекса

Вот мой код:

  • Родитель для второго:

Dim Sec As New SecondForm() Sec.MdiParent = Me Sec.Show()

  • Второй от одного к третьему:

Dim ThirdOne As New ThirdForm() ThirdOne.MdiParent = ParentForm ThirdOne.Show()

  • Третий запрос SQL в виде строки

Dim Request As String = "SELECT *, ForeignColumn FROM ADataBase " & "INNER JOIN SecondTable ON ADatabase.ForeignKey = SecondTable.PrimaryKey " & "WHERE ID = " & SecondForm.TheDataGridView.SelectedCells(0).Value.ToString

Но я получаю общую ошибку

Индекс вне диапазона

1 Ответ

0 голосов
/ 25 января 2019

Вот еще один подход, при условии, что в MdiParent у вас будет только ОДИН экземпляр SecondForm:

Public Class ThirdForm

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim second As SecondForm = GetSecondForm()
        If Not IsNothing(second) Then
            Debug.Print(second.TheDataGridView.SelectedCells(0).Value.ToString)
        End If
    End Sub

    Private Function GetSecondForm() As SecondForm
        Dim second As SecondForm = Nothing
        For Each frm As Form In Me.MdiParent.MdiChildren
            If frm Is SecondForm Then
                second = DirectCast(frm, SecondForm)
                Exit For
            End If
        Next
        Return second
    End Function

End Class

Если у вас будет более одного экземпляра SecondForm, и каждая ThirdForm должна быть «спарена» с конкретным экземпляром, тогда передайте ссылку от одного к другому, как это предлагается другими в комментариях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...