前提・実現したいこと
C#の勉強を始めました。
WindowsFormでDataGridViewでクリックしたセルの位置を取得したいです。
調べてみて以下のコードを書いてみましたがうまくいきません。
C#
1private void GridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) 2 { 3 // メソッドの引数senderから対象となるDataGridViewオブジェクトを取得します。 4 var dataGridView = (DataGridView)sender; 5 // マウスがクリックされた座標(e.X, e.Y)から、DaataGridViewのHitTestメソッドでDataGridViewの位置情報を保持するHitTestInfoオブジェクトを取得します。 6 DataGridView.HitTestInfo hitTestInfo = dataGridView.HitTest(e.X, e.Y); 7 8 int clickX = hitTestInfo.RowIndex; 9 int clickY = hitTestInfo.ColumnIndex; 10 }
発生している問題・エラーメッセージ
DataGridView内のどこのセルをクリックしてみてもhitTestInfoの中に
ColumnIndex:-1 ColumnX:0 RowIndex:-1 RowY:0 Type:TopLeftHeader
という値が入ってしまい、思ったように値が取得できません。
どうしてこうなってしまうかわかる方がいたら教えていただきたいです。
補足情報(FW/ツールのバージョンなど)
WindowsForm
DataGridView.CellClick イベントではいかがですか?
>SurferOnWwwさん
ご回答ありがとうございます。
DataGridViewCellEventArgsではdataGridView.HitTest(e.X, e.Y)のe.Xとe.Yが取得できないみたいです。
どのセルがクリックされたかが分かればいいと思っていたんですが違ったようですね。失礼しました。
eがColumnIndexとRowIndexを持っていますが、不足なのでしょうか?
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.datagridviewcellmouseeventargs?view=net-5.0
回答1件
あなたの回答
tips
プレビュー