実は、私はキランを信じますCellContentClick
を使用して正しいとしました。これを使用すると、セルの空のスペースがクリックされたときに実際のコンテンツがクリックされたときにのみ起動されます。したがって、DataGridViewLinkColumn
がある場合、リンクがクリックされると起動します。 DataGridViewTextBoxColumn
がある場合は、セル内のテキストをクリックすると起動します。空のスペースがクリックされた場合は起動しません。また、セルが空の場合は、そのセルについてはまったく起動しません。
CellClick
イベントは、空のセルも含めて、セルの一部がクリックされるたびに発生します。 @chessofnerd、私はなぜそれがあなたのために働いていないのか分かりませんが、私はこれを確かめるためにテストしました、少なくとも私にとっては、期待どおりに動作しています。
キランは、あなたの最初の場所であなたのCellContentClick
がうまくいかなかったのかと思っています。最初に気になるのは、gridviewのCellContentClickプロパティに新しいDataGridViewCellEventHandler
を追加することです。例えば、私のGridViewのがgridVendorInfo題された場合、私は最初に次のコードを使用する必要があります:
this.gridVendorInfo.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridVendorInfo_CellContentClick);
そして今、私は実際にそれをキャッチするために私のコードでその正確な方法を持っている必要があるだろう:
private void gridVendorInfo_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
string vendorName = "";
if (e.ColumnIndex == 0)
{
vendorName = gridVendorInfo.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
}
}
グリッドビューのCellContentClickイベントに新しいイベントハンドラを割り当てずに、まったく同じスペルのメソッドを追加すると、そのイベントハンドラは起動しません。うまくいけば助けて!あなたのフォームに行くだけで、あなたのgridviewをクリックし、プロパティウィンドウのイベントタブに行き、CellContentClickを見つけて、その右側のスペースをダブルクリックするほうがずっと簡単です。 VSはメソッドを作成し、新しいイベントハンドラをグリッドに割り当てるためのすべての作業を行います。次に、メソッドに入り、コードとブレークポイントを追加して発火しているかどうかを確認するだけです。
ありがとうございます。私も同様のアプローチを考えていました。しかし、私は 'DataGridViewLinkColumn'をクリックイベントを処理できるかどうか疑問に思っていました。 – Kiran
これは_cell_クリックを処理します。理想的には、私は_link_クリックに添付したいと考えています。 (すべてのリンクセルを反復することなく、どうやって、私はまだ自分自身を見つけようとしているのですか?) – chessofnerd
提案された解決策は_link_クリックで起動し、_cell_Clickで起動しません。これは、セルのクリックイベントが何をすべきかと非常に矛盾しているようですが、ちょっと、私たちの99%がとにかく欲しかったのです! (そして、貧しい人々の魂への私の謝罪は、本当に_cell_クリックでイベントが欲しい...)http://social.msdn.microsoft。com/Forums/windows/en-US/61443472-72b5-4202-a4c0-54cca77e13eb/datagridviewlinkcolumn-how-to-catchイベントクリックイベント – chessofnerd