C# DataGridViewButtonColumn 和 CellContentClick 事件
C# DataGridViewButtonColumn and CellContentClick event
如果您有一个包含 2 列的 Datagridview,一列是 TextBoxColumn,另一列是 ButtonColumn:
Select 文本单元格。
现在 highlight/select 单元格内的文本,同时选择(按住鼠标按钮),如果您将鼠标光标移到相邻的 ButtonColumn 上并释放鼠标按钮,那么 DatagridView 会为按钮列触发 CellContentClick,即使我在文本单元格。
我希望要触发 CellContentClick,MouseDown 和 MouseUp 必须都在同一个 Cell 中执行。我的用户也希望如此。
有人知道 workaround/fix 吗?
我通常避免使用 CellContentClick
并使用 CellClick
。
这不仅避免了这种奇怪的行为,而且避免了 CellContentClick
的其他陷阱:用户必须实际点击文本才能使其生效,而不是文本周围的空 space。
对于某些特殊情况,这甚至可能没问题,例如当一个单元格非常大并且想要区分单击它进行选择和单击内容进行编辑时。
但是 CellClick
适用于普通电池以及纽扣电池和其他电池。
是的,MSDN 谈到将它用于 DataGridViewButtonColumns
,但这只是一种可能的用途,绝不是必需的。
如果您有一个包含 2 列的 Datagridview,一列是 TextBoxColumn,另一列是 ButtonColumn:
Select 文本单元格。 现在 highlight/select 单元格内的文本,同时选择(按住鼠标按钮),如果您将鼠标光标移到相邻的 ButtonColumn 上并释放鼠标按钮,那么 DatagridView 会为按钮列触发 CellContentClick,即使我在文本单元格。
我希望要触发 CellContentClick,MouseDown 和 MouseUp 必须都在同一个 Cell 中执行。我的用户也希望如此。
有人知道 workaround/fix 吗?
我通常避免使用 CellContentClick
并使用 CellClick
。
这不仅避免了这种奇怪的行为,而且避免了 CellContentClick
的其他陷阱:用户必须实际点击文本才能使其生效,而不是文本周围的空 space。
对于某些特殊情况,这甚至可能没问题,例如当一个单元格非常大并且想要区分单击它进行选择和单击内容进行编辑时。
但是 CellClick
适用于普通电池以及纽扣电池和其他电池。
是的,MSDN 谈到将它用于 DataGridViewButtonColumns
,但这只是一种可能的用途,绝不是必需的。