各位高手,本人想写一个程序,点击按钮后的30秒假如窗口没有任何操作,窗口自动关闭。该怎么写?(本人刚学wpf,菜鸟一个请高手赐教)能否给个代码。
private void Button_Click(object sender, RoutedEventArgs e)
{
timer = new DispatcherTimer();
timer.Tick += new EventHandler(timer_Tick);
}
private void timer_Tick(object sender, EventArgs e)
{
this.Close();
}
private void MainWindow_TouchDown(object sender, TouchEventArgs e)
{
int i = 60;
if (timer.Interval != null)
{
timer.Interval = new TimeSpan(0, 0, i);
timer.Start();
}][/code]
private void Button_Click(object sender, RoutedEventArgs e)
{
timer = new DispatcherTimer();
timer.Tick += new EventHandler(timer_Tick);
}
private void timer_Tick(object sender, EventArgs e)
{
this.Close();
}
private void MainWindow_TouchDown(object sender, TouchEventArgs e)
{
int i = 60;
if (timer.Interval != null)
{
timer.Interval = new TimeSpan(0, 0, i);
timer.Start();
}][/code]
解决方案
4
WPF很久不用了。你这是60s,你这样不行吗?
12
下面的代码是获取上次鼠标键盘操作的到现在的时间间隔。在定时器中调用这个函数
[DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); /// <summary> /// 获取键盘和鼠标没有操作的时间 /// </summary> /// <returns>用户上次使用系统到现在的时间间隔,单位为秒</returns> public static long GetLastInputTime() { LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO(); vLastInputInfo.CBSize = Marshal.SizeOf(vLastInputInfo); if (!GetLastInputInfo(ref vLastInputInfo)) { return 0; } else { long count = Environment.TickCount - (long)vLastInputInfo.DWTime; long icount = count / 1000; return icount; } }
3
还在用wpf。刚学习不到3个月。
10
不需要,使用的是系统的dll
10
private void timer_Tick(object sender, EventArgs e)
{
this.Dispatcher.BeginInvoke(new CloseDel(Close));
}
private delegate void CloseDel();
private void Close()
{
this.Close();
}
线程间操作无效,委托关闭就OK了
{
this.Dispatcher.BeginInvoke(new CloseDel(Close));
}
private delegate void CloseDel();
private void Close()
{
this.Close();
}
线程间操作无效,委托关闭就OK了
6
不用,直接写可以用