请教各位一个关于C#事件方面的问题。

downdowna 2012-09-20 06:54:30
弱弱的问下,在.net下面,我的事件回调方法,如果是我自己定义的事件,他是在什么时候响应那个方法的。
比如说,我定义了一个事件。

public event MouseButtonEventHandler MouseSelectRow;
public delegate void MouseButtonEventHandler(bool e, int g);
MouseSelectRow+=new MouseButtonEventHandler(StartCheck);
void StartCheck()
{
anycode.......
}

这个时候我的确是吧方法绑定到事件上面了,也注册了事件,但是我没有定义什么时候响应那个事件啊,求点拨。了
...全文
96 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
downdowna 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

那你需要拦截button隐藏事件,还是我之前的代码,你得写:
public bool ButtonVisible
{
get { return button1.Visible; }
set { if (button1.Visible != value) ActionEvent(this, new ActionEventArgs()); button1.Visible = ……
[/Quote]谢谢你 明白了
devmiao 2012-09-20
  • 打赏
  • 举报
回复
那你需要拦截button隐藏事件,还是我之前的代码,你得写:
public bool ButtonVisible
{
get { return button1.Visible; }
set { if (button1.Visible != value) ActionEvent(this, new ActionEventArgs()); button1.Visible = value; }
}
downdowna 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

如果把两个对象的相互调用看作它们发消息的话,
那么a调用b,就是a向b发消息,
a注册了b的事件,b触发事件,就是b向a发消息。

也就是消息和事件是对偶的两个概念。
[/Quote]
貌似很多做法肯定还是,在内置的一些事件,比如说加载页面啊之后,或者按了什么东西的时候,就是引发了内置的一些事件的时候,再来引发我的自定义事件。
downdowna 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

如果把两个对象的相互调用看作它们发消息的话,
那么a调用b,就是a向b发消息,
a注册了b的事件,b触发事件,就是b向a发消息。

也就是消息和事件是对偶的两个概念。
[/Quote]
谢谢你哦 ,我再请教一下
比如说我要做一个自定义事件(比如弹出一段话之类的),我要在button隐藏的时候就引发那个事件
public delegate void ActionEventHandler()
public event ActionEventHandler ActionEvent;
然后下面怎么写哦
devmiao 2012-09-20
  • 打赏
  • 举报
回复
如果把两个对象的相互调用看作它们发消息的话,
那么a调用b,就是a向b发消息,
a注册了b的事件,b触发事件,就是b向a发消息。

也就是消息和事件是对偶的两个概念。
downdowna 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

当然不一定,我只是举例子哦。

你可以像调用函数那样任意触发事件。
[/Quote]
那我得有个不停的监听的东西,然后去捕获消息,然后做出响应。
Jia_H 2012-09-20
  • 打赏
  • 举报
回复
devmiao 2012-09-20
  • 打赏
  • 举报
回复
当然不一定,我只是举例子哦。

你可以像调用函数那样任意触发事件。
downdowna 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

比如说,你封装了一个控件,带有一个按钮一个文本框,你现在想为这个控件增加一个ButtonClick事件,你这么写:

public event EventHandler ButtonClick;

...

构造函数:
this.Button1.Click += this.button1_Click; //假设button1是我们控件内的一个按钮。

...

void b……
[/Quote]


也就是说我们自己定义的事件也必须要由.net内置的事件来触发?
devmiao 2012-09-20
  • 打赏
  • 举报
回复
比如说,你封装了一个控件,带有一个按钮一个文本框,你现在想为这个控件增加一个ButtonClick事件,你这么写:

public event EventHandler ButtonClick;

...

构造函数:
this.Button1.Click += this.button1_Click; //假设button1是我们控件内的一个按钮。

...

void button1_Click(object sender, EventArgs e)
{
ButtonClick(this, e); //当按钮被按动,触发我们的事件
}
devmiao 2012-09-20
  • 打赏
  • 举报
回复
事件是在控件或者库内部触发。

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧