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