用户控件自定义事件的触发问题
本帖最后由 huge92 于 2013-12-08 20:51:03 编辑
坛子上搜到关于用户自定义事件触发的问题,我发现我也有同样的问题:
http://bbs.csdn.net/topics/340167855
比如一个输入到5个字就自动预警的对话框(先不考虑用事件来实现小题大做的问题= =)
public partial class AutoTextBox : UserControl
{
public AutoTextBox()
{
InitializeComponent();
}
//省略...
public delegate void AlertHandler(object sender, EventArgs e);
public event AlertHandler Alert;
protected virtual void OnAlertGoOff(EventArgs e)
{
if (Alert != null)
{
Alert(this,e);
}
}
public void AlertGoOff()
{
if (this.TextLength >= 5)
{
EventArgs e = new EventArgs();
OnAlertGoOff(e);
}
}
}
然后,这个AlertGoOff()得给它找个地方引发了,不然事件效果就出不来。
而如果一般我们拖个Button到窗体上,比如就单击事件,这个引发方法我们是看不到的,但肯定也有地方把它引发了。
1.对于这个方法在哪里引发我一直都有疑问,我们自己写的AlertGoOff()可以放到其他已有控件的事件中去把它引发了,但是.NET已有的控件是上哪儿去引发的?它又没有已有的事件或者什么别的地方可用。
我觉得.NET Framework肯定有它一套消息传递机制,不知道我这么想对不对?这个消息传递机制让系统知道什么时候是点了一下,什么时候是按了一个键,所以就相应引发了类似AlertGoOff()的方法。
2.我们自己写用户控件的自定义事件的时候,怎么样像.NET Framework一样利用这样的消息机制呢?
比如窗体背景一变白就做XXX,
这个一变白:
White()
{
if(主窗体背景一变白)
......
}
方法应该放到什么地方去引发呢?
3.那个帖子里有人说做成用户控件好像就不用手工触发了,原理和默认的button一样,这是在逗吗?
水晶报表 输出下上标有关问题