NO.1 委托情况!我想在系统给的函数里加个参数
private void button1_Click(object sender, EventArgs e,Button bt)
{}
?怎么改?
NO.2 调用事件!我想直接调用系统给的函数如:
private void button1_Click(object sender, EventArgs e)
{}
怎样调用?可以放在其他函数里面用吗?
private void button1_Click(object sender, EventArgs e,Button bt)
{}
?怎么改?
NO.2 调用事件!我想直接调用系统给的函数如:
private void button1_Click(object sender, EventArgs e)
{}
怎样调用?可以放在其他函数里面用吗?
第一个 try override
这个是标准,如果需要在事件里添加自定义的其它参数,可能要重新定义一个事件.可以考虑从EventArgs继承一个新的参数类,然后给这个类添加属性等来达到要求.但需要自已来定义触发新的事件,并把新的事件参数做为引发事件的参数.如果要调用事件函数可以直接调用函数,如:
this.button1_Click(null, null);都用null,是因为没有合适的参数,如果需要这两个参数有意义,那么可以由实际情况传入.
能具体点吗?
EventArgs继承只是为了统一 一个约定而已 不是语言规范
{}
当我这样用是系统报错:
this.button1.Click += new System.EventHandler(this.button1_Click);
(button1.click的重载均委托System.EventHandler)
{
// 摘要:
// 表示将处理不包含事件数据的事件的方法。
[Serializable]
[ComVisible(true)]
public delegate void EventHandler(object sender, EventArgs e);
}
在从元数据里.该文件不能修改..不能重载!
第一个参数是事件源对象,如果这个被用了,那么就写个EventArgs的子类,给他加个属性,把你另外要传的对象给相关属性不就行了,在事件里在向下转换就行了
一般情况下button1_Click(object sender, EventArgs e)的sender就是触发点击事件的那个button,用sender as Button就可以了。
自己定义EventArgs的时候要符合实际逻辑,比如Click事件是不包含任何信息的,因为它只代表了某个控件被点击,没有额外的信息。而MouseClick就可以包含是哪个鼠标键点击的信息。一般情况下,只要设计合理,不需要再加额外的参数了。
其实NET很简单
但你要用它的windows库,却连windows都不知道