版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010243305/article/details/83184039
添加定时器
直接在代码中new一个定时器并绑定回调函数即可
跨线程关闭其他窗口
会报异常:
解决方法:
在你要操作的窗口的类的构造函数中指明允许跨线程操作。
public partial class AlarmInfoWindow : Form
{
public AlarmInfoWindow()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false; //允许跨线程操作此窗口
}
此处略去不可告人的一千行……
例程:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace EzHostCtrl
{
public partial class AlarmInfoWindow : Form
{
public AlarmInfoWindow()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false; //允许跨线程操作此窗口
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void clearnAlarm_Button_Click(object sender, EventArgs e)
{
MessageBox.Show("报警已清除");
}
/* 自己添加的,用于向listBOX中添加项 */
public void listBox1_addItem(String str)
{
this.AlarmList_listBox.Items.Add(str);
}
}
}
知道你想复制抄袭,重要部分代码:
public AlarmInfoWindow alarmWindow;
private void tspbtn_ErrorReport_Click(object sender, EventArgs e)
{
alarmWindow = new AlarmInfoWindow();
alarmWindow.listBox1_addItem("DFDG");
alarmWindow.Show();
/*创建定时器*/
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Interval = 5000;
aTimer.Elapsed += ATimer_Elapsed_AlarmWindDead; //定时时间到的时候的回调函数
aTimer.AutoReset = false;//这里填否,不然会反复执行回调函数
aTimer.Enabled = true; //启动定时器
}
/* 定时器回调函数 */
private void ATimer_Elapsed_AlarmWindDead(object sender, System.Timers.ElapsedEventArgs e)
{
alarmWindow.Close();
}