带有大字体的Windows对话框

sor*_*rke 5 .net openfiledialog winforms-interop savefiledialog winforms

我正在咨询一个大型.Net winforms项目,该项目必须能够以"触摸"模式运行,因此可以使用触摸屏界面进行操作.应用程序架构已经包含扩展逻辑,用于放大标准.Net表单和控件上的字体/显示,自定义控件也可以处理缩放.

问题是应用程序使用OpenFileDialog和SaveFileDialog,它不能使用相同的逻辑进行扩展(这实际上是在递归地调整控件和表单上Font属性的大小).我相信这些对话框本质上是本机Windows对话框,而OpenFileDialog类实际上只是包装类,它们公开了一个标准的.Net接口来与它们进行交互.

一种解决方案可能是为这些事情实现自定义对话框,但这可能是一些广泛的工作.我们真正想做的是以某种方式缩放这个特定对话框的字体大小(可能通过一些P/Invoke窗口处理魔术)?

我知道触摸启用的一个解决方案通常是调整Windows的字体大小,但是这个想法并没有真正吸引这家公司,他们宁愿扩展应用程序本身并使其余的操作系统不受影响.

那么,关于如何将这些对话框扩展为更大的字体的任何经验或想法?或者我们应该咬紧牙关并为此创建自定义对话框?

The*_*One 1

\n

我知道触摸启用的一种解决方案是调整 Windows 的字体大小,但这个想法并没有真正吸引这家公司,他们宁愿缩放应用程序本身并留下其余部分操作系统未受影响。

\n
\n\n

您提到的对话框是“操作系统的其余部分”的一部分,他们宁愿不受影响。您要么使用通用对话框,被迫增加控制面板(即系统范围)中的字体缩放比例,要么自己重新实现这些对话框。

\n\n

另一种方法可能是使用适当的 API 创建一个单独的 Windows 桌面,增加其字体缩放比例,并在那里执行应用程序(即让应用程序创建、使用和销毁该桌面)。然后,应用程序和所有常见对话框都会放大。\n但是,该应用程序永远不会与其他应用程序一起出现在一个屏幕上,并且您必须注意在应用程序中切换桌面(我认为)。当应用程序处于活动状态时,除了应用程序 GUI 之外,您不会看到任何内容。没有开始按钮,没有任务栏,没有 nuttin\xc2\xb4。有关详细信息,请参阅例如http://www.codeproject.com/KB/cs/csdesktopswitching.aspx

\n