【问题标题】:DataGridView: 'cannot convert from method group to keysDataGridView: '无法从方法组转换为键
【发布时间】:2017-07-24 17:18:55
【问题描述】:

我有一个带有 datagridview 的 WinFormApp,我正在尝试编写一个方法,当您在所选行上按 Enter 时该方法会执行某些操作。 例如 - gridview 显示我的数据库中的一些数据,它有 4 列,在您按照自己喜欢的方式编辑完这些列后,按 Enter 键,数据将与新值一起保存在数据库中。 目前我的 Form1()

中有这个
     dataGridView1.PreviewKeyDown += new PreviewKeyDownEventArgs(dataGridView1_PreviewKeyDown);

我觉得不对,方法是这样的:

void dataGridView1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            // do something
        }
    }

我对编程还很陌生,所以非常感谢一个好的解释。

谢谢!

【问题讨论】:

    标签: c# datagridview eventhandler


    【解决方案1】:

    您是否尝试过使用 CellValueChanged 事件?如果您有更新数据库的代码,它应该会自动更新。

    private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            MessageBox.Show("Test if works"); //it works
        }
    

    编辑-

    或者,如果您希望它只在选定的行/列中按下回车键时执行命令,您可以使用类似

    private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if(e.ColumnIndex == 1)
               {
                   MessageBox.Show("Test if works"); //it works
               }
        }
    

    【讨论】:

      【解决方案2】:

      这里dgv是DatawGridView的一个对象,这个事件只有当用户触发 改变单元格的内容。这意味着,如果一个单元格的值为“abc”并且用户在同一个单元格中再次重新键入“abc”,则不会触发此事件。同样,如果用户在编辑后点击键盘上的“Escape”键,那么也不会触发此事件。这意味着,在编辑后,如果用户在键盘上按下“Enter/Return”键,则如果旧值和新值不相同,则会触发此事件。

      private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
      {
          //code to save your changed data
      }
      

      【讨论】:

        猜你喜欢
        • 2021-06-25
        • 2013-10-02
        • 1970-01-01
        • 2021-01-26
        • 2017-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-08
        相关资源
        最近更新 更多