起きたことや背景
マスタ登録画面上で、削除を押した際に、行を削除する処理を実装中に、以下のようなエラーが発生した。より厳密には、削除ボタンをクリックした際の処理でエラーが発生しました。
Google検索で、これに対する解決法が見つからず(原因がわかったので、その点に集中して調べれば見つかるかも)、ChatGPTへ問い合わせしても解決しなかったため、忘却録としてこの記事に残しました。
エラー文
System.InvalidOperationException: '現在のカレンシー マネージャーの位置に関連付けられた行を非表示にすることはできません。'
実際のコード
'DataGridView上で、マウスをクリックした際のイベント
Private Sub dgvStatus_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvStatus.CellMouseClick
If (e.Button = MouseButtons.Right) Then
If (e.ColumnIndex >= 0 And e.RowIndex >= 0) Then
Me.dgvStatus(e.ColumnIndex, e.RowIndex).Selected = True
Me.ctmClickMenu.Show(System.Windows.Forms.Cursor.Position)
End If
End If
End Sub
'ContextMenuStripをクリックした際のイベント
Private Sub tsmiDelete_Click(sender As Object, e As EventArgs) Handles tsmiDelete.Click
If dgvStatus.SelectedCells.Count > 0 Then
Dim selectedRowIndex As Integer = dgvStatus.SelectedCells(0).RowIndex
If selectedRowIndex >= 0 AndAlso selectedRowIndex < dgvStatus.Rows.Count Then
dgvStatus.Rows(selectedRowIndex).Visible = False
End If
End If
End Sub
原因
行を削除(論理削除のため非表示)しようとしていたが、実際にはセルが選択されていたことが原因。
対処法
セルを右クリックで選択した際に、セルではなく行が選択されるようにコードを修正したことで解決しました。
Private Sub dgvStatus_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvStatus.CellMouseClick
If (e.Button = MouseButtons.Right) Then
If (e.ColumnIndex >= 0 And e.RowIndex >= 0) Then
'***ここを修正した***
dgvStatus.Rows(e.RowIndex).Selected = True
'****************
Me.ctmClickMenu.Show(System.Windows.Forms.Cursor.Position)
End If
End If
End Sub
Private Sub tsmiDelete_Click(sender As Object, e As EventArgs) Handles tsmiDelete.Click
If dgvStatus.SelectedCells.Count > 0 Then
Dim selectedRowIndex As Integer = dgvStatus.SelectedCells(0).RowIndex
If selectedRowIndex >= 0 AndAlso selectedRowIndex < dgvStatus.Rows.Count Then
dgvStatus.Rows(selectedRowIndex).Visible = False
End If
End If
End Sub
注意事項
- この記事では、SQL Server、SSMS、visual studioを使用しているので、試してみたい方は事前に準備が必要です。
この記事は誰向けの記事か?
- エラーで困っている人向け
環境
- OS:Windows10
- SQL Server
- SQL Server Management Studio(SSMS):v19.0.2
- visual studio 2022
- ChatGPT
本記事における注意事項
- 本記事は、備忘録としてまとめたものになります。
- 他の方の参考になる可能性も踏まえて、一般公開も行なっております。
- また記載内容はすべて、正しい内容が記載されているとは限りません。
- 誤った内容を見つけた場合は、ご指摘をお願いいたします。
- この記事の内容では、一部、ChatGPTを利用しております。