首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理DataGridViewLinkColumn的点击事件

如何处理DataGridViewLinkColumn的点击事件
EN

Stack Overflow用户
提问于 2012-10-22 20:23:23
回答 2查看 25.8K关注 0票数 15

我在C#有一个WinForm。DataGridView的其中一列的类型为DataGridViewLinkColumn。如何处理每列上的单击事件?

这段代码似乎不起作用:

代码语言:javascript
复制
private void UserDataTable_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            //Code here
        }

例如,如果我有10行,每当我单击与列"DataGridViewLinkColumn“对应的每一行的内容时,我应该能够处理它。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-22 20:26:31

为什么不使用CellClick事件处理函数,可以使用e.ColumnIndex引用每一行对应的列e.RowIndex,如下图所示:

代码语言:javascript
复制
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 ...
}
票数 12
EN

Stack Overflow用户

发布于 2016-02-25 00:52:35

实际上,我相信Kiran使用CellContentClick是正确的。当您使用它时,它不会在单元格的空白区域被单击时触发,只有在其实际内容被单击时才会触发。因此,如果您有一个DataGridViewLinkColumn,它将在单击链接时触发。如果您有一个DataGridViewTextBoxColumn,它将在单元格中的文本被单击时触发。如果单击空白区域,它将不会触发,或者如果单元格为空,它将根本不会触发该单元格。

每当单元格的任何部分被单击时,都会触发CellClick事件。@chessofnerd,我不确定为什么这对你不起作用,但我已经测试过了,至少对我来说,它完全像预期的那样工作。

基兰,这让我想知道为什么你的CellContentClick一开始就不能工作。首先要做的是确保在网格视图的CellContentClick属性中添加了一个新的DataGridViewCellEventHandler。例如,如果我的网格视图标题为gridVendorInfo,我首先需要使用以下代码:

代码语言:javascript
复制
this.gridVendorInfo.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridVendorInfo_CellContentClick);

现在,我需要在我的代码中使用这个确切的方法才能真正捕获它:

代码语言:javascript
复制
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事件分配一个新的事件处理程序并添加拼写完全相同的方法,它将不会触发。希望这能有所帮助!只需转到表单,单击网格视图,转到属性窗口中的Events选项卡,找到CellContentClick,然后双击它右侧的空白处,就可以轻松得多。VS将为您完成创建方法和为gridvew分配新的eventhandler的所有工作。然后,您只需进入该方法并添加一些代码和断点,以查看它是否触发,它应该是触发的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13011407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档