带有大字体的Windows对话框

带有大字体的Windows对话框

问题描述:

我正在咨询一个大的.Net winforms项目,该项目必须能够在“触摸”模式下运行,因此可以使用触摸屏界面进行操作。应用程序体系结构已包含缩放逻辑,用于放大标准.Net窗体和控件上的字体/显示,并且自定义控件还可处理缩放。带有大字体的Windows对话框

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

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

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

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

+0

[This](http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx)文章可能会对你有所帮助。 – ahazzah

+0

这篇文章很好,但我不会这样。我宁愿重写代码,而不是从黑客密封的.NET类。下一个版本的框架或API更改可能会轻易破坏您的代码。使用第三方控件可以为您提供很多帮助(付费或免费)。我会先找一个树形控件,这很难定制和所有。 –

+0

[This](http://www.codeproject.com/KB/dialog/CustomizeFileDialog。aspx)其他文章可能也会帮助你=) –

我知道,触摸启用一个解决办法是调整Windows在一般的 字体大小,但这种想法是不是真的有这家公司赶上 上,他们宁愿缩放应用程序本身,离开 操作系统的其余部分未改动。

您引用的对话框是“其他操作系统”的一部分,他们宁愿保持原样。 您可以使用常用对话框,强制增加控制面板(即系统范围)中的字体缩放比例,也可以自行重新实现这些对话框。

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

+1

我会接受这个答案,因为这是唯一可行的发布(尽管我希望除了“自己重新实现对话框:)”之外) –

对于你来说,最好的解决方案是创建一个表单,实现带有标签的标题和关闭按钮,并在表单的其余部分放置你所需要的。在这种情况下,标签字体可能会增加到任何你想要的大小。当你在这个对话框中只需调用.sohwDialog()表格