c# – WPF访问打开的打印对话框并关闭它们

我有一个 WPF应用程序,需要在5分钟不活动后注销用户.

但是如果用户打开任何页面的打印对话框,并且不触摸屏幕5分钟,
即使我注销用户并清除所有子元素,打印对话框仍然保留在WPF表单的顶部,并且有人可以继续打印页面用户留下的内容.

我试着用;

Window window = Application.Current.MainWindow;

要么

FocusManager.GetFocusedElement();

但无法实现访问PrintDialog并关闭它.

有没有办法访问它并关闭如果用户没有响应打印对话框?

解决方法

我通过使用修复了这个奇怪的问题

白色项目.
http://white.codeplex.com/wikipage?title=Working%20with%20window&referringTitle=Programming%20using%20white

通过使用应用程序类,我可以访问WPF项目中的所有ModalDialog,并关闭它们.

Application application = White.Core.Application.Attach(Process.GetCurrentProcess().Id);

private void dispatcherTimer_Tick(object sender,EventArgs e)
    {
        White.Core.UIItems.WindowItems.Window window = application.GetWindow("MainWindow");
        List<White.Core.UIItems.WindowItems.Window> modalWindows = window.ModalWindows();
        foreach (White.Core.UIItems.WindowItems.Window modalWindow in modalWindows)
        {
            modalWindow.Close();
        }
    }

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString(&quot;x2&quot;));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable&lt;Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include &quot;WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...