如何在DataGridView中的每列添加CellContentClick事件

时间:2019-03-12 10:33:52

标签: c# winforms datagridview datagridviewcolumn

是否可以按列设置CellContentClick事件方法,例如作为DataGridViewColumn的方法。

如果仅针对此列而不是像整个DataGridView.CellContentClick那样发生整个DataGridView,则仅运行CellContentClick。

我需要这个来派生DataGridViewButtonColumn。因此,如有必要,可以在此DataGridViewColumn中添加我自己的方法/属性。

1 个答案:

答案 0 :(得分:1)

您可以为自定义列类型定义一个事件,然后覆盖自定义单元格的OnContentClick并引发该列的事件。

请记住,要使用它,您需要通过代码预订事件,因为该事件属于Column,并且您无法在设计器中看到它。

示例

在这里,我创建了一个自定义按钮列,您可以订阅其ContentClick事件。这样,您无需检查CellContentClick的{​​{1}}事件是否由于单击此按钮列而引发。

DataGridView

要使用它,您需要通过代码预订事件,因为该事件属于using System.Windows.Forms; public class MyDataGridViewButtonColumn : DataGridViewButtonColumn { public event EventHandler<DataGridViewCellEventArgs> ContentClick; public void RaiseContentClick(DataGridViewCellEventArgs e) { ContentClick?.Invoke(DataGridView, e); } public MyDataGridViewButtonColumn() { CellTemplate = new MyDataGridViewButtonCell(); } } public class MyDataGridViewButtonCell : DataGridViewButtonCell { protected override void OnContentClick(DataGridViewCellEventArgs e) { var column = this.OwningColumn as MyDataGridViewButtonColumn; column?.RaiseContentClick(e); base.OnContentClick(e); } } ,并且您无法在设计器中看到它:

Column