2

初めて datagridview にデータを入力すると、最初の行が強調表示され、クリックするとクリックされたインデックスの値が表示されるボタンが表示されるので、どの行がクリックされたかがわかります。ユーザーが別の検索を行った場合は、datagridview の内容を消去してから、新しいデータを再入力します。繰り返しますが、最初の行 (index(0)) が強調表示されますが、今回はユーザーがボタンをクリックすると、グリッドの最初の行が強調表示されていても、data_grid.rows が何もないことを示すエラーが表示されます。最初の行を .selected = true に設定してみましたが、何も変わりません。それは最初にのみ機能し、その後は二度と機能しません。これが私のコードです:

Public sub show_data()

 ' Clear everything out of the data grid
 ' -------------------------------------
   With data_grid
     While data_grid.RowCount > 0
       data_grid.Rows.Clear()
     End While
     While data_grid.ColumnCount > 0
       data_grid.Columns.Clear()
     End While
   End With

 ' add the empty rows to the data grid
 ' -----------------------------------
  Dim rows As Integer = assessment_array.Count()
  data_grid.Rows.Add(rows)

' Add the data to the columns
' ---------------------------
  For r As Integer = 0 To rows - 1
   data_grid.Item(0, r).Value = assessment_array(r)(0) 
   data_grid.Item(1, r).Value = assessment_array(r)(1) 
   data_grid.Item(2, r).Value = assessment_array(r)(2)
  Next

 With data_grid
    .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
    .RowHeadersVisible = False 
    .AllowUserToAddRows = False 
    .AllowUserToDeleteRows = False
    .AllowUserToOrderColumns = True
    .ReadOnly = True
    .SelectionMode = DataGridViewSelectionMode.FullRowSelect
    .MultiSelect = False
    .AllowUserToResizeRows = False
    .Rows(0).Selected = True ' highlight the first row
 End With

End sub

AddHandler myButton.Click, AddressOf check_for_highlighted_assessment

Public Sub check_for_highlighted_assessment()
  MessageBox.Show(data_grid.CurrentRow.Index.ToString)
End Sub

初めてボタンをクリックすると、「0」が返されます。データグリッドに新しいデータが再入力されると、次にボタンをクリックするとエラーが発生します。

助けてくれてありがとう。

4

1 に答える 1

4

データの更新後に選択した行を設定するだけでなく、CurrentRowプロパティを自動的に設定する現在のセルを設定する必要があります。たとえば、次のようになります。

.Rows(0).Selected
.CurrentCell = .Rows(0).Cells(0)
于 2013-10-23T19:59:08.490 に答える