首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式关闭PrintDialog?

如何以编程方式关闭PrintDialog?
EN

Stack Overflow用户
提问于 2010-02-19 01:33:21
回答 1查看 865关注 0票数 0

如何以编程方式关闭WPF PrintDialog?我试图通过反射来调用Finalize,但这也没有关闭它。下面是我尝试过的:

代码语言:javascript
复制
using System;
using System.Reflection;
using System.Threading;
using System.Windows;
using System.Windows.Controls;

namespace WpfApplication15
{
    partial class Window1 : Window
    {
        PrintDialog _printDialog;

        public Window1()
        {
            InitializeComponent();
            new Thread(OpenDialog).Start();
            new Thread(CloseDialog).Start();
        }

        void OpenDialog()
        {
            Thread.Sleep(1000);
            Dispatcher.BeginInvoke((Action)OpenDialogImpl);
        }

        void OpenDialogImpl()
        {
            _printDialog = new PrintDialog();
            _printDialog.ShowDialog();
        }

        void CloseDialog()
        {
            Thread.Sleep(2000);
            Dispatcher.BeginInvoke((Action)CloseDialogImpl);
        }

        void CloseDialogImpl()
        {
            var type = typeof(PrintDialog);
            var flags = BindingFlags.Instance | BindingFlags.NonPublic;
            var finalize = type.GetMethod("Finalize", flags);
            finalize.Invoke(_printDialog, null);
            MessageBox.Show("Finalized");
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2010-02-19 05:30:57

在内部,PrintDialog类使用Win32PrintDialog作为ShowDialog()方法的局部变量,该方法最终使用windows公共对话框。使用反射来获取某些东西来关闭它可能是徒劳的,或者至少是令人抓狂的。

这只是一个延伸,因为我还没有用过它,但是可以使用White向对话框的取消按钮发出一个按钮按下命令。UISpy (在白页上提到)可能也有助于实现这一目标。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2290751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档