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

时间:2009-10-13 13:07:48

标签: c# .net datagridview

我在C#.NET方面经验不足,以下是我到目前为止的经验:

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

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

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

我已经尝试了很长一段时间。我试图禁用这些列可以点击但没有运气......

有什么方法可以解决这个问题吗?

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

非常感谢提前!

2 个答案:

答案 0 :(得分:4)

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

示例:

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

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

答案 1 :(得分:0)

  

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

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