【问题标题】:DataGridView and the CellEndEdit EventDataGridView 和 CellEndEdit 事件
【发布时间】:2015-09-18 17:00:48
【问题描述】:

我有一个DataGridView,并想加入CellEndEdit 事件。我已经能够成功挂接到CellContentClick 事件,但遇到CellEndEdit 的问题。

我将以下代码添加到我的Form1.cs 文件中:

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            dataGridView1[0, 0].Value = "Changed";
        }

使用该代码,当我完成对单元格的编辑时,什么也不会发生。我还需要做些什么才能成功参与此活动吗?我看到 CellContentClick 有一个

this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick);

Form1.Designer.cs 文件中的代码行,但我尝试为CellEndEdit 模仿此代码,并收到编译错误

('dataGridView1_CellEndEdit' 没有重载匹配委托 'System.Windows.Forms.DataGridViewCellEventHandler')

【问题讨论】:

    标签: c# .net winforms datagridview


    【解决方案1】:

    您可以自己实现。

    在您的构造函数中,您可以有一个 HookEvents() 方法来连接此类事件。

    或者,在表单设计器中,单击 gridview 将其选中,然后转到属性窗口并单击黄色雷电图标以查找事件列表。然后,向下滚动并找到 CellEndEdit 事件并双击它 - 这将为您连接事件。

    要自己接线,它可能看起来像:

    class A : Form
    {
      public A()
      {
        Initialize();
        HookEvents();
      }
    
      private void HookEvents()
      {
        dataGridView1.CellEndEdit += dataGridView1_CellEndEdit;
      }
    }
    

    【讨论】:

      【解决方案2】:

      我非常怀疑您的解决方案是否可行。

      订阅的位置与您的订阅方式无关。

      Brandon,您正在声明一个 EventHandler,该函数负责在该事件“dataGridView1_CellEndEdit”但您未订阅该事件的情况下执行您想要执行的操作。同样在您的函数中,您传递了错误的参数。

      简单的解决方案是从设计器窗口或通过代码订阅:

      写入“dataGridView1.CellEndEdit +=”,然后按两次 TAB 按钮。这应该创建用于订阅事件的代码和正确的委托来处理它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        相关资源
        最近更新 更多