各位高手,本人想写一个程序,点击按钮后的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
不用,直接写可以用