【发布时间】:2010-02-18 17:33:21
【问题描述】:
如何以编程方式关闭 WPF PrintDialog?我试图通过反射调用Finalize,但这也没有关闭它。这是我尝试过的:
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");
}
}
}
【问题讨论】:
-
用户无法手动关闭此对话框是否有原因?也许您可以针对您的问题发布一些背景信息,这可能会有所帮助。谢谢!
-
我要实现自动注销。
-
我遇到了类似的问题并在这里发布了答案; stackoverflow.com/questions/17282082/…
标签: wpf winapi printing printdialog