Как я могу изменить подпись пользовательской кнопки с #
У меня есть собственная кнопка:
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;
}