C#中关于事件定阅的问题?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
} void SystemEvents_TimeChanged(object sender, EventArgs e)
{
MessageBox.Show("时间已更改");
}//其他代码略...问题:
1.当事件发生时,会出现两个MessageBox("时间已更改"),为什么?2.直接更改MessageBox中的内容如改为MessageBox.Show("哈哈"),F5运行后仍然是MessageBox.Show("时间已更改"),除非在加上SystemEvents.TimeChanged -= new EventHandler(SystemEvents_TimeChanged)再加上SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);才会MessageBox("哈哈"),为什么?3.怎么判断一个事件是否已定阅?
if(SystemEvents.TimeChanged != null)
{
//这样?
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
} void SystemEvents_TimeChanged(object sender, EventArgs e)
{
MessageBox.Show("时间已更改");
}//其他代码略...问题:
1.当事件发生时,会出现两个MessageBox("时间已更改"),为什么?2.直接更改MessageBox中的内容如改为MessageBox.Show("哈哈"),F5运行后仍然是MessageBox.Show("时间已更改"),除非在加上SystemEvents.TimeChanged -= new EventHandler(SystemEvents_TimeChanged)再加上SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);才会MessageBox("哈哈"),为什么?3.怎么判断一个事件是否已定阅?
if(SystemEvents.TimeChanged != null)
{
//这样?
}
解决方案 »
- .net通过mysql.data.dll连接mysql,更新字段里有@或是?时,出错???
- GridView选中列 变色
- Crystal Reports的安装求解
- 怎么做画图板里面的那个A 那样的 文字输入框
- [提问]Java调用我的Webservice参数传递不进来
- 如何打开Excel 2007的表
- c#中如何在一个文件中调用另一个文件的类(救救一个习惯java,刚开始学C#的人!)
- 怎么把一个字符串转换为datetime类型?
- C#初学者群,群号16133306,欢迎广大C#初学者,程序员加入。本人今天都在线,马上可以加入
- 求购教育软件源码.
- 请问这个代码我这样写,为什么到不出数据?我到底是写错了嘛?
- 诚请思归、孟子E章高手级别的大哥帮忙解决(WEB MSN自动发送信息)
SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
你可以检查一下
2.重新生成方案应该可以解决显示信息不变的问题,至于你所说的情况,很可能就是在×××.Designer.cs里面已经定义了
SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
3.自己定义一个bool变量,订阅之后改为true以上为个人理解
我是这么想的:
窗体第一次显示时订阅了一次事件,MessageBox单击确认后,焦点回到主窗体导致窗体又重绘一次,调用造函数,于是又订阅了一次事件???
///////////////////////
把
SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
放到Button_Click事件(单击一次)里,有时也会MessageBox两次?
所以在添加添加前检查是否有订阅