环境 : .net 6 wpf
我在调用printdialog.print(ui,名称) , 方法打印的时候, 在win7 系统下,必须把要打印的ui先显示到桌面上,再打印. 如果不显示直接打印,就会打印空白. 这个问题在win10上就不会出现
我的ui是一个wpf窗口, 里面是我要打印的内容, win10 下,直接new 这个窗口就可以, 而win7必须多一步 show 方法才行,
这是为什么呢?
也遇到这个问题了,请问这个问题解决了吗?请不啬赐教!
解决了, 我在打印的时候判断了一下系统是win7还是win10, win7的话就先显示窗口, 打印完毕再自动关闭, win10 则没有这步操作
private OperatingSystem os = Environment.OSVersion; //获取系统版本
hesuanbaogaoyang bf = new hesuanbaogaoyang(result.data, true); //ui界面
if (os.Version.Major < 10)
{
bf.Show();
}
Task.Run(() => { speech.Speak("正在打印请稍等"); });
dialog.PrintVisual(bf.ddy, "报告单");
bf.Close();
@百鸟朝凤: 非常感谢回复!昨天晚上我也狂找了一堆资料,从老外的描述中,win7 系统的话,应该在 PrintVisual 之前应该将要打印的控件要强制渲染一下,代码如下:
PrintDialog printDlg = new PrintDialog();
// Force the content to be rendered
{
//win7 系统的机器 如果不加这一段的话,会打印出空白页
this.Measure(new System.Windows.Size(this.LayoutRoot.Width + this.LayoutRoot.Margin.Left, this.LayoutRoot.Height + this.LayoutRoot.Margin.Top));
this.Arrange(new Rect(new System.Windows.Point(0, 0), this.DesiredSize));
this.UpdateLayout();
}
printDlg.PrintVisual(this, "Print DrugLabel");
我试了一下,win7下现在是可以打印了!
@poisson_notes: 嗯,和我的差不多, 都是一个意思, 我是直接调用了页面, 显示下再关闭