c# - PrintDialog 改变 WPF 中的文化
问题描述
我们目前是 WPF 中使用标准打印对话框的一种打印方法。打印后,我们的安全令牌开始出现问题。调试显示文化为 en-GB,日期格式为 dd/MM/yyyy。在 dialog.PrintDocument 行之后,从 DateTime.Now 返回的日期格式更改为 mm/dd/yyyy?
调试当前线程文化显示从“en-GB”到“”的更改,并且正如预期的那样,日期格式更改为 US mm/dd。
我一直没有成功找到这方面的任何信息,所以我希望 Hive 头脑可以提供帮助!
void PrintPdf_Click(object sender, RoutedEventArgs e)
{
CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() != true)
return;
Console.WriteLine(DateTime.Now);
dialog.PrintDocument(_pdfDocumentView.PrintDocument.DocumentPaginator, "Print");
Console.WriteLine(DateTime.Now);
Thread.CurrentThread.CurrentCulture = currentCulture;
Console.WriteLine(DateTime.Now);
}
解决方案
问题归结为 PrintDocument 的 Syncfusion 属性访问器。它在里面做的第一件事就是将当前的文化更改为不变!由于当时无法启动新线程,因此将其重新设置是唯一的解决方案。
推荐阅读
- javascript - 有没有可能的方法在树结构中添加指向父级的指针?
- svm - 从我自己的 JAVA 代码中使用 SVM 和 Weka 时的实例权重异常
- python - 将连续行号作为第一列添加到多个熊猫
- java - gradle-clover-plugin 从单独的模块获取代码覆盖率
- javascript - 上传文件时更改文件名
- javascript - Create React App 展示的是 serviceWorker.js 而不是很多教程展示的 registerServiceWorker
- assembly - 从使用 nasm 制作的基本 PE+ uefi 应用程序调用 ExitBootServices 时遇到问题
- jquery - 通过 jQuery.html() 时 ASP 页面链接不可用
- php - 如何在不使用 required_once 的情况下设计基于 pico CMS 的简单插件?
- angular - patchValue 只是不起作用!有什么作用?