方法名称应为C# [英] Method name expected c#

查看:128
本文介绍了方法名称应为C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个事件处理程序,我想向事件传递一些参数

I have an event handler, i would like to pass some parameters to the event

像这样,该行触发错误:预期方法名称

like this, that line trigger an error: method name expected

   p.Click += new System.EventHandler(P_Click(sender, new MyEventArgs { design = reader1["desig_prd"].ToString(), prix = (float)reader1["prix_prd"] }));

我的P_Click事件

my P_Click event

public void P_Click(Object sender, EventArgs e)
    {
        var args = (MyEventArgs)e;
        string deignation = args.design;
        MessageBox.Show(deignation);
    }

我有这样的类MyEventArgs

and i have class MyEventArgs like this

class MyEventArgs : EventArgs
{
    public string design { get; set; }
    public float prix { get; set; }
}

有帮助吗? 预先感谢

推荐答案

订阅事件处理程序时,不能将参数传递给方法.您应该仅指定方法名称:

You can't pass arguments to your method when you subscribing an event handler.You should just specify the method name:

p.Click +=  new EventHandler(P_Click);

或简称:

p.Click +=  P_Click;

如果要手动触发并传递一些参数,则应使用该参数调用方法:

If you want to trigger this manually and pass some arguments then you should call your method with that arguments:

P_Click(this, new MyEventArgs { design = reader1["desig_prd"].ToString(), 
                                prix = (float)reader1["prix_prd"] 
                              });

但这通常是一个坏习惯(手动触发事件处理程序方法).请使用

But this is usually a bad practice, (triggering event handler methods manually).Instead use PerformClick method after subscribe your event handler and of course create another method for your arguments, and call that method from P_Click:

p.PerformClick();

这篇关于方法名称应为C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆