2014-01-03 7 views
0

Я пытаюсь получить значение для DataGridView 'DGV', когда загружается моя winform, т.е. Forms2_load. DGV привязан, и я использую код ниже, чтобы заполнить DGV.Получить значение из DataGridView при загрузке формы

Вопрос в том, как получить значение из «DGV» без вмешательства пользователя, только когда форма загружается. Я попробовал следующий цикл в событии загрузки формы, но сообщение не появляется. Может кто-то, пожалуйста, помогите с этим. Спасибо

Me.CustomersTableAdapter.Fill(Me.StorageDataSet1.Customers) 

Dim values As String 

    For Each RW As DataGridViewRow In DGV.SelectedRows 
     'Send the first cell value into messagebox' 
     values = RW.Cells(0).Value.ToString 

    Next 

MessageBox.Show(values) 
+0

Вы используете SelectedRows, который пуст при загрузке формы (пока еще не выбран). Лучше попробуйте строки. – varocarbas

+0

Я пробовал строки, но ящик сообщений пуст, поэтому я не предполагаю, что значение не будет восстановлено. Спасибо – user1532468

+0

Если вы замените 'DGV.SelectedRows' на' DGV.Rows' и в нем нет пустых записей, по крайней мере, одна строка первого столбца в 'DGV',' values' будет пустой. Это максимум, который я (или кто-либо еще) могу сказать с информацией, которую вы предоставляете. 'RW.Cells (0) .Value.ToString()' отлично. Если он не возвращает никакого значения, это означает, что нет значения, которое нужно вернуть. – varocarbas

ответ

1

Вы можете получить лучшие результаты, если используете источник привязок, к которому подключен DGV. Он получит событие CurrentChanged только после его загрузки или перемещения позиции.

Private Sub BindingSource(sender As System.Object, e As System.EventArgs) Handles BindingSource.CurrentChanged 
    Dim oVw As DataRowView 
    oVw = TryCast(BindingSource.Current, DataRowView) 
    If Not oVw Is Nothing Then 
     MessageBox.Show(oVw.Item(0).ToString) 
     ' 
    End If 
End Sub 

Это будет срабатывать каждый раз, когда DGV перемещается в новое положение. Измените имя на любой ваш BindingSource.

Смежные вопросы