在拼装组件的时候(继承于其它组件,比如Button),有时候原有的那个组件(比如button)里的那个事件对象(就是那个e),里的东西可能很不够用,所以,我想用自定义事件类去替换掉原有的事件类,怎么做呢?我尝试的原码如下。public delegate void EventHandler(ArgsEvent e);
[DefaultEvent("Click")]
public partial class Component1 : Button
{
public new event EventHandler Click;
public Component1()
{
InitializeComponent();
}
} public class ArgsEvent : EventArgs
{
private int x;
private int y;
public ArgsEvent(int x, int y)
{
this.x = x;
this.y = y;
}
public int X
{
get
{
return this.x;
}
}
public int Y
{
get
{
return this.y;
}
}
}这么做之后,好像事件类是被替换掉了,但是好像通知失效了,用户点了之后没有反应了
请高手们帮忙解决一下,最好在不调用WinApi的情况下解决。
[DefaultEvent("Click")]
public partial class Component1 : Button
{
public new event EventHandler Click;
public Component1()
{
InitializeComponent();
}
} public class ArgsEvent : EventArgs
{
private int x;
private int y;
public ArgsEvent(int x, int y)
{
this.x = x;
this.y = y;
}
public int X
{
get
{
return this.x;
}
}
public int Y
{
get
{
return this.y;
}
}
}这么做之后,好像事件类是被替换掉了,但是好像通知失效了,用户点了之后没有反应了
请高手们帮忙解决一下,最好在不调用WinApi的情况下解决。
解决方案 »
- C# 的一段代码,在windowmobile下正常,在winform下报错,各位高手帮忙看看是什么问题。
- System.Drawing.Imaging.ImageFormat.Jpeg的问题
- C#查询SQL数据库行数问题。
- 1=00001
- DLL文件为什么要注册,不注册就不能使用吗,DLL文件注册到注册表中是什么字符串特征?
- c#准确判断显示器数量
- 请问怎样双击鼠标关闭TabControl上的选项卡页??
- WPF WrapPanel怎样绑定子控件集
- C#获取网站源代码数据中文乱码??
- 什么工具测试 VS.net WindowsApplication 的性能比较好
- 如何使GridView里面的其中一个字段只显示前5个字符串
- 怎样用&取整数最后几位?
[DefaultEvent("Click")]
public partial class Component1 : Button
{
public new event EventHandler Click;
public Component1()
{
InitializeComponent();
base.Click += new System.EventHandler(myButton_Click);
}
void myButton_Click(object sender, EventArgs e)
{
int x=0; //x的值请自行赋值
int y=0; //y的值请自行赋值
Click(new ArgsEvent(x, y));
} } public class ArgsEvent : EventArgs
{
private int x;
private int y;
public ArgsEvent(int x, int y)
{
this.x = x;
this.y = y;
}
public int X
{
get
{
return this.x;
}
}
public int Y
{
get
{
return this.y;
}
}
}
最好不要调用WinApi里的点击通知,只是把这个组件的点击事件通知,绑定到原有的事件通知上即可。
private System.EventHandler proxy = new System.EventHandler(button_Click);public new event EventHandler Click
{
add
{
base.Events.AddHandler(this, this.proxy);
}
remove
{
base.Events.RemoveHandler(this, this.proxy);
}
}private static void button_Click(object sender, System.EventArgs e)
{}
我在二楼的发的代码,我测试过,OK的
protected override void OnClick(EventArgs e)
{
if (this.Click != null)
{
//Fire the click event here...
}
}