|
やじゅさん、シャノンさん ご回答ありがとうございます.
この件に関しまして解決しました. 原因と解決法について説明させていただきます. DataGridはDataGrid1とします.
まずヘッダ部を選択しているのにCurrentRowIndexが-1ではなく0となっていた原因ですが、
DataGrid1.DataSource = DataTable1
とした後に、
GRDMEISAI.Select() GRDMEISAI.CurrentCell = New DataGridCell(0, 0)
とし、先頭行先頭列にフォーカスを当てていました. この状態でDataGridを表示するとCurrentRowIndexは0です. 一度でもヘッダ行を左クリックするとCurrentRowIndexは-1になるのですが、 左クリックをせずに右クリック→コンテキストメニュー起動 としていたためCurrentRowIndexは0のままでした.
次にMouseDownイベントを作成し右クリック時にもCurrentRowIndexを取得し処理を行えるようにしました.
******************************************************************************************************************* Private Sub DataGridView1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles GRDMEISAI.MouseDown
'右ボタンの確認 If e.Button = Windows.Forms.MouseButtons.Right Then
'マウス下のセルを取得 Dim lHitTestInfo As DataGrid.HitTestInfo = GRDMEISAI.HitTest(e.X, e.Y)
With lHitTestInfo
'セル(行ヘッダ)では、コンテキストメニューを使用不可 If .Row.Equals(-1) Then GRDMEISAI.ContextMenu = Nothing Else GRDMEISAI.ContextMenu = ctmGrd End If
End With
End If End Sub *******************************************************************************************************************
自分の書いたソースが原因でした. お騒がせしてすいませんでした.
|