【问题标题】:C# DataGridViewButtonColumn and CellContentClick eventC# DataGridViewButtonColumn 和 CellContentClick 事件
【发布时间】:2018-10-30 03:47:34
【问题描述】:

如果你有一个有 2 列的 Datagridview,一个是 TextBoxColumn,另一个是 ButtonColumn:

选择文本单元格。 现在突出显示/选择单元格内的文本并在选择时(按住鼠标按钮),如果将鼠标光标移动到相邻的 ButtonColumn 上并释放鼠标按钮,那么即使我在文本单元格内执行了 MouseDown,DatagridView 也会为按钮列触发 CellContentClick。

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

有人知道解决方法/解决方法吗?

【问题讨论】:

  • 您是否调试过代码并检查您在e.ColumnIndex 中获得的值?和TextBoxColumn还是ButtonColumn一样吗?
  • 我可以确认这一点。奇怪,接近错误。但 imo 对 CellContentClick 的任何使用都容易出错,最好完全避免。
  • 感谢您的确认。 Microsoft 建议使用 CellContentClick 来检测按钮按下。你有其他方法来检测按钮按下吗?
  • @Chetan 是的,我检查了,ColumnIndex 设置为按钮的列
  • 这是一种方式,但 CellClick 应该也能正常工作。

标签: c# winforms datagridview datagridviewbuttoncolumn


【解决方案1】:

我通常避免使用CellContentClick 而使用CellClick

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

对于某些特殊情况,这甚至可能没问题,例如当一个单元格非常大并且想要区分单击它进行选择和单击内容进行编辑时。

CellClick 对普通电池以及纽扣电池和其他电池都可以正常工作。

是的,MSDN 谈到将它用于DataGridViewButtonColumns,但这只是一种可能的用途,绝不需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2013-04-25
    相关资源
    最近更新 更多