首页 > 解决方案 > txtCash_KeyUp 的无重载与委托“KeyEventHandler”匹配

问题描述

我的文本框:

private void txtCash_KeyUp(object sender, KeyEventArgs f, DataGridViewCellEventArgs e)
                                                         //need to add this for getting row counts
    {
        if (f.KeyCode == Keys.Enter)
        {
         
                for(int i = 0; i < fpos.dgSales.Rows.Count;i++)
                {
                    Products prod = new Products
                    {
                        ProductID = Convert.ToInt32(fpos.dgSales.Rows[e.RowIndex].Cells[2].Value.ToString()),
                        ProductCode = fpos.dgSales.Rows[e.RowIndex].Cells[3].Value.ToString(),
                        Quantity = Convert.ToInt32(fpos.dgSales.Rows[e.RowIndex].Cells[3].Value.ToString()),
                    };
                    prod.Product_UpdateQtySales();
                }
            
        }
    }

我添加DataGridViewCellEventArgs e了这个来获取行数。但我在这个表单的设计器上遇到了一个错误。

错误行 // this.txtCash.KeyUp += new System.Windows.Forms.KeyEventHandler(this.txtCash_KeyUp);
错误 // txtCash_KeyUp 的无重载与委托“KeyEventHandler”匹配

标签: c#winforms

解决方案


KeyEventHandler委托人具有以下签名:

void KeyEventHandler(object sender, KeyEventArgs e);

该方法txtCash_KeyUp具有以下签名:

void txtCash_KeyUp(object sender, KeyEventArgs f, DataGridViewCellEventArgs e);

要将方法组转换为委托类型(这是您尝试使用的new KeyEventHandler(this.txtCash_KeyUp)),签名必须兼容,但由于您添加了附加参数,因此不再是这种情况。

调用该事件处理程序的代码不知道您想要这些DataGridViewCellEventArgs或从哪里获取它们。您将不得不以不同的方式检索该信息。


推荐阅读