带有大字体的Windows对话框

时间:2011-08-18 06:48:46

标签: .net winforms openfiledialog savefiledialog winforms-interop

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

  

我知道触摸启用的一个解决方案是调整   Windows的字体大小一般,但这个想法并没有真正抓住   与这家公司合作,他们宁愿扩展应用程序本身并离开   操作系统的其余部分未受影响。

您引用的对话框是“操作系统的其余部分”的一部分,他们宁愿保持不变。 您可以使用常用对话框,强制在控制面板中增加字体缩放,即在系统范围内,或者自己重新实现这些对话框。

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

答案 1 :(得分:-1)

对您来说,最好的解决方案是创建一个表单,使用标签和close botton实现标题,并在表单的其余部分放置您需要的内容。在这种情况下,标签字体可以增加到您希望的任何大小。当你在这个对话框上做什么时,只需在窗体

上调用.sohwDialog()