[英]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.