【问题标题】:how to stop the double click event in a datagridview from being raised?如何停止引发datagridview中的双击事件?
【发布时间】:2012-02-05 22:49:00
【问题描述】:

我有一个 datagridview,其中一列是一个复选框。每次用户选中或取消选中其中一个复选框时,我都会处理 CellContentClick 事件以更新信息。它工作得很好。我的问题是,当我双击复选框 CellContentClick 被调用,然后 CellContentDoubleClick 之后。我想取消对 CellContentDoubleClick 的调用。有没有办法做到这一点?

【问题讨论】:

  • 您可以在正在处理单击的类中添加一个标志,如果设置了该标志,则在双击事件中返回。但这在很大程度上取决于发送事件的顺序,并且可能不是最好的方式。
  • 谢谢。是的,这似乎是一个不错的选择。但是,我不知道当我执行 return 时,复选框是否最终会被标记。我所做的一件事是将属性 ReadOnly 设置为 true,之后当您双击单元格中的复选框时,只会更新一次。
  • 当事件在 CellContentClick 之后不久出现时,您可以轻松地使用 bool 标志来忽略该事件。我开始回忆这是一个错误......这里有更多信息:aspnet-answers.com/microsoft/NET/33946836/…stackoverflow.com/questions/381072/…social.msdn.microsoft.com/Forums/en-us/csharpgeneral/thread/…

标签: c# winforms c#-4.0


【解决方案1】:

您可以从数据网格中删除事件处理程序。

     EventHandler eventHandler = new EventHandler(YourdataGridview_CellContentDoubleClick);
     YourdataGridview.CellContentDoubleClick -= eventHandler; 

【讨论】:

    【解决方案2】:

    您可以创建自己的类,该类继承自 DataGridView 并覆盖引发事件的方法,使其不会被引发。

    public class MyDataGridView : DataGridView
    {
        protected override viod OnCellContentDoubleClick(
    DataGridViewCellEventArgs e)
        {
            // by having no code here and not 
            // calling base.OnCellContentDoubleClick(e);
            // you prevent the event being raised
        }
    }
    

    http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.oncellcontentdoubleclick.aspx

    【讨论】:

      【解决方案3】:

      这个怎么样:

      public class MyDataGridView : DataGridView
      {
          protected override void OnCellContentDoubleClick(DataGridViewCellEventArgs e)
          {
              base.OnCellContentClick(e);
          }
      }
      

      【讨论】:

        【解决方案4】:

        您可以将 CellContentClickCellContentDoubleClick 连接到一个方法,而不是为 CellContentDoubleClick 取消无效。

                    gridviewTreasures.CellContentClick += new DataGridViewCellEventHandler(gridviewTreasures_CellContentClick);
                    gridviewTreasures.CellContentDoubleClick += new DataGridViewCellEventHandler(gridviewTreasures_CellContentClick);
        

        【讨论】:

          猜你喜欢
          • 2017-08-23
          • 1970-01-01
          • 1970-01-01
          • 2017-03-12
          • 1970-01-01
          • 2012-06-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多