[英]How to handle the click event of DataGridViewLinkColumn
我在C#中有一个WinForm。 其中一个柱的DataGridView
是类型的DataGridViewLinkColumn
。 如何处理每列的click事件?
此代码似乎不起作用:
private void UserDataTable_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//Code here
}
例如,如果我有10行,每当我单击与“ DataGridViewLinkColumn
”列对应的每一行的内容时,我应该能够处理它。
谢谢
为什么不使用CellClick
事件处理程序,可以通过使用e.ColumnIndex
引用每行的相应列e.RowIndex
,如下所示:
private void dataGridView1_CellClick(object sender,
DataGridViewCellEventArgs e)
{
// here you can have column reference by using e.ColumnIndex
DataGridViewImageCell cell = (DataGridViewImageCell)
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
// ... do something ...
}
实际上,我相信Kiran使用CellContentClick
正确。 使用此选项时,单击单元格的空白空间时,仅在单击其实际内容时才会触发。 因此,如果您有一个DataGridViewLinkColumn
,它将在单击链接时触发。 如果您有一个DataGridViewTextBoxColumn
,它将在单击单元格中的文本时触发。 如果单击空白区域,则不会触发,或者如果单元格为空,则根本不会为该单元格触发。
单击单元格的任何部分(包括空单元格)时,将触发CellClick
事件。 @chessofnerd,我不确定为什么那不适合你,但我已经测试了这一点以确保,至少对我而言,它的工作完全符合预期。
Kiran,这让我想知道为什么你的CellContentClick
首先没有工作。 首先要想到的是确保您将新的DataGridViewCellEventHandler
添加到gridview的CellContentClick属性中。 例如,如果我的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();
}
}
如果您没有为gridview的CellContentClick事件分配新的事件处理程序并添加拼写完全相同的方法,则不会触发。 希望这有帮助! 只需转到表单,单击gridview,转到Properties窗口中的Events选项卡,找到CellContentClick,然后双击它右侧的空格就容易多了。 VS将为您创建方法并为gridvew分配新的事件处理程序。 然后你只需要进入方法并添加一些代码和一个断点来查看它是否正在触发,它应该是。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.