C#.NET DataGridView启用单元格仅单击某些列

C#.NET DataGridView启用单元格仅单击某些列,c#,.net,datagridview,C#,.net,Datagridview,我在C#NET方面没有什么经验,以下是我迄今为止的收获: 我创建了一个绑定到ObjectDataSource(即通用列表)的DataGridView 虽然我可以很好地利用DataGridView的CellClick事件及其相应的委托接口(DataGridViewCellEventHandler)来完成我的业务逻辑,但我仍然 对整体逻辑不满意 基本上,上述方法的缺点是,对于某些列,不需要绑定CellClick事件。他们只是简单地显示信息,而不是试图倾听 点击一些事件 我已经努力实现这一目标很长时间

我在C#NET方面没有什么经验,以下是我迄今为止的收获:

我创建了一个绑定到ObjectDataSource(即通用列表)的DataGridView

虽然我可以很好地利用DataGridView的CellClick事件及其相应的委托接口(DataGridViewCellEventHandler)来完成我的业务逻辑,但我仍然 对整体逻辑不满意

基本上,上述方法的缺点是,对于某些列,不需要绑定CellClick事件。他们只是简单地显示信息,而不是试图倾听 点击一些事件

我已经努力实现这一目标很长时间了。我试图禁止点击这些列,但没有成功

有没有解决这个问题的好办法

我真的不想检查委托处理程序函数中的实际columnIndex是什么,然后采取相应的行动。基本上,如果一开始不会触发手机点击,那么这将是一个很好的解决方案

非常感谢

我真的不想检查委托处理程序函数中的实际columnIndex是什么,然后采取相应的行动

不幸的是,您没有选择,因为
DataGridView
没有公开其
DataGridViewColumn
对象上的事件。为什么这种行为对你有问题

我真的不想检查委托处理程序函数中的实际columnIndex是什么,然后采取相应的行动


不幸的是,您没有选择,因为
DataGridView
没有公开其
DataGridViewColumn
对象上的事件。为什么这种行为对你有问题?

@Ian,不完全正确……如果你真的不想做过滤,老实说,我认为这没什么大不了的。您始终可以创建自己的自定义DataGridView并覆盖OnCellClick事件。为了使其更简单,您可以将不希望在设计时引发事件的列设置为只读,并在引发事件之前检查该条件

例如:

public class MyDataGridView : DataGridView
{
     public MyDataGridView()
     {
     }

     protected override void OnCellClick(DataGridViewCellEventArgs e)
     {
          if (!Columns[e.ColumnIndex].ReadOnly)
          {
               base.OnCellClick(e);
          }
     }
}

@伊恩,不完全正确……如果你真的不想做过滤,老实说,我认为这没什么大不了的。您始终可以创建自己的自定义DataGridView并覆盖OnCellClick事件。为了使其更简单,您可以将不希望在设计时引发事件的列设置为只读,并在引发事件之前检查该条件

例如:

public class MyDataGridView : DataGridView
{
     public MyDataGridView()
     {
     }

     protected override void OnCellClick(DataGridViewCellEventArgs e)
     {
          if (!Columns[e.ColumnIndex].ReadOnly)
          {
               base.OnCellClick(e);
          }
     }
}

没错,我无法使特定DataGridViewColumn中的单元格不响应CellClick事件。。。业务逻辑集中在某些列中的特定单元格上,我觉得检查和过滤那些由其他地方的CellClicks引起的“不相关”CellClick事件是没有效率的。比如说,我得到了A、B和C列。我只关心B和C列,我想忽略A列单元格触发的CellClick事件。我现在做的是,在做任何严肃的事情之前,我检查事件是否来自A列。如果是,我只是忽略它,我觉得这可能不好……没错,我不能让单元格(尤其是DataGridViewColumn)不响应CellClick事件。。。业务逻辑集中在某些列中的特定单元格上,我觉得检查和过滤那些由其他地方的CellClicks引起的“不相关”CellClick事件是没有效率的。比如说,我得到了A、B和C列。我只关心B和C列,我想忽略A列单元格触发的CellClick事件。我现在所做的是在做任何严肃的事情之前,我检查事件是否来自A栏。如果是,我只是忽略它,我觉得这可能不好……非常感谢詹姆斯!这将以一种干净有效的方式解决我的问题,我爱它!非常感谢詹姆斯!这将以一种干净有效的方式解决我的问题,我爱它!