我如何更改自定义按钮的签名 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;
}
我有我的自定义按钮:
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;
}