Kir*_*ran 13 c# datagridview winforms
我在C#中有一个WinForm.其中一个DataGridView类型是DataGridViewLinkColumn.如何处理每列的click事件?
此代码似乎不起作用:
private void UserDataTable_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//Code here
}
Run Code Online (Sandbox Code Playgroud)
例如,如果我有10行,每当我点击对应于列" DataGridViewLinkColumn" 的每一行的内容时,我应该能够处理它.
谢谢
Fur*_*dar 11
为什么不使用CellClick事件处理程序,可以e.RowIndex通过使用引用每行的相应列e.ColumnIndex,如下所示:
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 ...
}
Run Code Online (Sandbox Code Playgroud)
实际上,我相信 Kiran 通过使用CellContentClick. 当您使用它时,它不会在单击单元格的空白区域时触发,只有在单击其实际内容时才会触发。所以如果你有一个DataGridViewLinkColumn,它会在点击链接时触发。如果你有一个DataGridViewTextBoxColumn它会在单元格中的文本被点击时触发。如果单击空白区域,它将不会触发,或者如果单元格为空,则根本不会为该单元格触发。
CellClick每当单击单元格的任何部分(包括空的部分)时,都会触发该事件。@chessofnerd,我不确定为什么这对您不起作用,但我已经对此进行了测试以确保,至少对我来说它完全按预期工作。
Kiran,这让我想知道为什么你一CellContentClick开始没有工作。首先想到的是确保您正在向DataGridViewCellEventHandlergridview 的 CellContentClick 属性中添加一个新属性。例如,如果我的 gridview 的标题是 gridVendorInfo,我需要先使用以下代码:
this.gridVendorInfo.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridVendorInfo_CellContentClick);
Run Code Online (Sandbox Code Playgroud)
现在我需要在我的代码中使用那个确切的方法来实际捕获它:
private void gridVendorInfo_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
string vendorName = "";
if (e.ColumnIndex == 0)
{
vendorName = gridVendorInfo.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
如果您没有为 gridview 的 CellContentClick 事件分配一个新的事件处理程序并添加拼写完全相同的方法,它就不会触发。希望这有帮助!只需转到您的表单,单击您的 gridview,转到“属性”窗口中的“事件”选项卡,找到 CellContentClick,然后双击它右侧的空间就容易多了。VS 将为您完成创建方法并将新事件处理程序分配给 gridvew 的所有工作。然后你只需要进入该方法并添加一些代码和一个断点,看看它是否正在触发,它应该是。
| 归档时间: |
|
| 查看次数: |
21257 次 |
| 最近记录: |