我有WPF
应用程序,我有一个注册窗口。
当我点击注册标签时,它会打开注册窗口。
我的要求是,如果在点击注册标签后没有活动,它应该超时并移动到另一个窗口。
答案 0 :(得分:3)
我认为您需要检查窗口上的空闲时间
在Windows加载的事件
上 private static DispatcherTimer idleTimer;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
idleTimer = new DispatcherTimer();
idleTimer.Interval = TimeSpan.FromSeconds(5);
idleTimer.Tick += this.OnTimerTick;
idleTimer.Start();
}
计时器勾选事件
private void OnTimerTick(object sender, EventArgs e)
{
uint idleTime = this.GetIdleTime();
if (idleTime > 5000)
{
this.Close();
}
}
空闲时间助手方法
[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO dummy);
private uint GetIdleTime()
{
LASTINPUTINFO lastUserAction = new LASTINPUTINFO();
lastUserAction.CbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(lastUserAction);
GetLastInputInfo(ref lastUserAction);
return (uint)Environment.TickCount - lastUserAction.DwTime;
}
internal struct LASTINPUTINFO
{
public uint CbSize;
public uint DwTime;
}
答案 1 :(得分:1)
您可以将值放在Application.Current.Properties
中,以便在整个应用程序中使用它。
Application.Current.Resources["ResourceName"] = "SomeData";
存储此类数据的一般策略是拥有公共类 使用公共属性/字段并从中访问它们 应用。但是,使用Windows Presentation Foundation(WPF), 框架本身提供了一个应用程序范围的“存储包”, Application.Properties,可用于相同的目的。 此包是基于应用程序域的特定于线程安全的键值 IDictionary实例。