【发布时间】:2013-06-21 08:23:46
【问题描述】:
我有一个 WPF 应用程序,需要在闲置 5 分钟后注销用户。
但是如果用户打开任何页面的打印对话框,并且在 5 分钟内不触摸屏幕, 即使我注销用户并清除所有子元素,打印对话框仍然停留在 WPF 表单的顶部,并且有人可以来继续打印用户留下的任何页面。
我试过用;
Window window = Application.Current.MainWindow;
或
FocusManager.GetFocusedElement();
但无法访问 PrintDialog 并关闭它。
如果用户没有响应打印对话框,有什么方法可以访问并关闭它?
【问题讨论】:
-
当您注销用户时,您是否具有对
PrintDialog对象的编程访问权限?如果是这样,您可以尝试调用Dispose方法或Reset方法。或者,虽然不是很好,但是否可以在用户退出后简单地重新启动程序? -
WPF 控件的某些部分嵌入了 WebBrowser 控件,当用户在 WebBrowser 控件中单击打印时,JavaScript 会触发 PrintDialog。然后我没有那个时刻的 PrintDialog 参考。
-
为什么你原来的答案不好了?你也看过我对这个问题的回答:stackoverflow.com/questions/7926107/force-close-of-messagebox(顺便说一句:White 使用 UI 自动化)。
-
目前还不清楚 5 分钟后还会发生什么。程序是在没有用户登录的情况下继续运行,还是应该退出?
-
由于打印对话框属于 JS 而不是 C#,我猜你可能无法轻松访问和关闭它。但是您可以将 JavaScript 代码注入 WebBrowser 控件...也许您应该询问如何从 JavaScript 关闭对话框,然后尝试将该代码注入 WebBrowser。
标签: c# wpf printdialog