Как я могу изменить подпись пользовательской кнопки с #

У меня есть собственная кнопка:

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 класса, один CatchEvent для customEvent:

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

И один класс Calcul:

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
}

Итак, моя последняя проблема - восстановить значение моего класса CatchEvent без наследия класса. Спасибо за помощь!

1 ответ

Решение

Хотя на самом деле вы не можете изменить подпись, вы можете вставить расширенный набор данных аргументов в вызов события, если вы используете собственный класс Button.

Здесь вы предоставляете настраиваемый набор аргументов в своем классе настраиваемой кнопки, переопределяя Click может так:

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

Теперь вы можете получить доступ к данным в событиях кликов вашего экземпляра, приведя EventArgs e на ваш CatchEvent класс:

private void button1_Click(object sender, EventArgs e)
{
    CatchEvent catchEvent = (CatchEvent)e;
    Console.log(catchEvent.EventEnergy);
    button1.Text = catchEvent.data; 
}
Другие вопросы по тегам