我如何更改自定义按钮的签名 C#

How i can change signature of custom button c#

我有我的自定义按钮:

public partial class RaiseEvent : Button
{

 public RaiseEvent()
{
 InitializeComponent();
}

 private void button1_Click(object sender, EventArgs e)
 {}

}

我需要像这样更改签名:

private void button1_Click(object sender, CatchEvent e)
{}

完整编辑:我有一个 DLL,其中有 2 个 class,一个用于 customEvent 的 CatchEvent:

public class CatchEvent : EventArgs
{
 public double data = 0;
 public CatchEvent(double value)
 {
 data = value;
 }
 public EventEnergy
 { 
 get { return this.data}
 }
}

还有一个 class 微积分:

public class Calcul
{
 public delegate void EventHandler(object sender, CatchEvent e);
 public event EventHandler<CatchEvent> NewData;
 public void Event(double value, byte[] data)
{
 //some calculs = double result
 OnRaiseCustomEvent(new CatchEvent(result));
}
 public virtual void OnRaiseCustomEvent (CatchEvent e)
{
 raiseEvent(this.e);
}

在我的表格评论中提出建议:

public button1_Click (object sender, EventArgs e)
{
 double data = //i try to recover value from my class CatchEvent without legacy
 CatchEvent ce = new CatchEvent(data)
 textBox1.Text = ce.data.Tostring();
}
public Form1(Calcul pub)
{
 pub.NewData += button1; //doesnt work
}

所以我的最后一个问题是在没有 class 遗留问题的情况下从我的 class CatchEvent 中恢复价值。 谢谢你的帮助!

虽然您不能真正更改签名,但如果您使用自定义按钮,则可以将一组扩展的参数数据滑入事件调用中 class。

在这里,您通过覆盖 Click 在自定义按钮 class 中提供一组自定义参数,可能像这样:

protected override void OnClick(EventArgs e) 
{
    double data = // get data from DLL
    catchEvent ce = new catchEvent (data );
    base.OnClick(ce); 
}

现在您可以通过将 EventArgs e 转换为您的 CatchEvent class:

来访问实例点击事件中的数据
private void button1_Click(object sender, EventArgs e)
{
    CatchEvent catchEvent = (CatchEvent)e;
    Console.log(catchEvent.EventEnergy);
    button1.Text = catchEvent.data; 
}