只要一调用PrintDialog类的PrintXXX方法就报FatalExecutionEngineError,错误内容是:检测到 FatalExecutionEngineError Message: 运行时遇到了错误。此错误的地址为 0x58e29ddd,在线程 0xfb4 上。错误代码为 0x80131623。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。下面是最简单的调用,其他任何在网络上下的打印项目都报这个错误: private void button1_Click(object sender, RoutedEventArgs e)
{
PrintDialog dialog = new PrintDialog();
dialog.PageRangeSelection = PageRangeSelection.AllPages;
if (dialog.ShowDialog() == true)
{
dialog.PrintVisual(this.canvas1, "canvas");
}
}<Grid>
<Canvas Name="canvas1">
<TextBlock Canvas.Left="56" Canvas.Top="46" Text="打印测试"/>
</Canvas>
<Button Content="Button" Name="button1"Click="button1_Click" />
</Grid>
{
PrintDialog dialog = new PrintDialog();
dialog.PageRangeSelection = PageRangeSelection.AllPages;
if (dialog.ShowDialog() == true)
{
dialog.PrintVisual(this.canvas1, "canvas");
}
}<Grid>
<Canvas Name="canvas1">
<TextBlock Canvas.Left="56" Canvas.Top="46" Text="打印测试"/>
</Canvas>
<Button Content="Button" Name="button1"Click="button1_Click" />
</Grid>
楼主现在有没有解决方案?
http://blog.csdn.net/johnsuna/article/details/1816317这个
http://blog.sina.com.cn/s/blog_624dc0120100ld6m.html
PrintDialog print = new PrintDialog();
// print.PageRangeSelection = PageRangeSelection.AllPages;
if (print.ShowDialog() == true)
{
try
{
print.PrintVisual(textBlock1, "test");
}
catch
{
MessageBox.Show("打印组件调用错误,请检查系统驱动安装!");
}
}System.Object
System.Windows.Controls.PrintDialog
需要注意的是:不要将System.Windows.Controls.PrintDialog与System.Windows.Forms.PrintDialog混淆了,后者用于WinForm应用程序中。System.Windows.Controls.PrintDialog则用于Windows Presentation Foundation (WPF)应用程序中。