C#DataGridViewButtonColumn和CellContentClick事件

C#DataGridViewButtonColumn和CellContentClick事件,c#,winforms,datagridview,datagridviewbuttoncolumn,C#,Winforms,Datagridview,Datagridviewbuttoncolumn,如果Datagridview有两列,一列是TextBoxColumn,另一列是ButtonColumn: 选择文本单元格。 现在高亮显示/选择单元格内的文本,并在选择(按住鼠标按钮向下)的同时,如果将鼠标或移动到相邻的按钮栏上并释放鼠标按钮,则DatagridView将触发单元格内容单击按钮栏,即使我在textcell内按下了鼠标 我希望要触发CellContentClick,MouseDown和MouseUp必须在同一个单元格中执行。我的用户也希望如此 有人知道这方面的解决方法吗?我通常避免使

如果Datagridview有两列,一列是TextBoxColumn,另一列是ButtonColumn:

选择文本单元格。 现在高亮显示/选择单元格内的文本,并在选择(按住鼠标按钮向下)的同时,如果将鼠标或移动到相邻的按钮栏上并释放鼠标按钮,则DatagridView将触发单元格内容单击按钮栏,即使我在textcell内按下了鼠标

我希望要触发CellContentClick,MouseDown和MouseUp必须在同一个单元格中执行。我的用户也希望如此


有人知道这方面的解决方法吗?

我通常避免使用
CellContentClick
,而选择
CellClick

这不仅避免了这种奇怪的行为,还避免了CellContentClick的其他陷阱:用户必须实际点击文本才能使其工作,而不是它周围的空白

对于某些特殊情况,这甚至可能是好的,例如当一个单元格非常大,人们想要区分单击它进行选择和单击内容进行编辑

但是
CellClick
对于普通单元格、按钮单元格和其他单元格都可以正常工作


是的,MSDN谈到将其用于
DataGridViewButtonColumns
,但这只是一种可能的用途,绝不是重复使用。

您是否调试了代码并检查了
e.ColumnIndex
中的值?它与TextBoxColumn或ButtonColumn相同吗?我可以确认这一点。奇怪,和虫子差不多。但在我看来,CellContentClick的任何使用都是容易出错的,最好完全避免。谢谢您的确认。Microsoft建议使用CellContentClick检测按钮按下。你有其他方法来检测按钮按下吗?@Chetan是的,我选中了,ColumnIndex设置为按钮的列。这是一种方法,但CellClick也可以。