5

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

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

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

我知道启用触控的一种解决方案是调整 Windows 的字体大小,但这个想法并没有真正受到这家公司的欢迎,他们宁愿扩展应用程序本身,而让操作系统的其余部分保持不变。

那么,关于如何将这些对话框缩放为更大字体的任何经验或想法?还是我们应该硬着头皮为此创建自定义对话框?

4

2 回答 2

1

我知道启用触控的一种解决方案是调整 Windows 的字体大小,但这个想法并没有真正受到这家公司的欢迎,他们宁愿扩展应用程序本身,而让操作系统的其余部分保持不变。

您所指的对话框是他们宁愿保持不变的“操作系统的其余部分”的一部分。您要么使用公共对话框,被迫增加控制面板中的字体缩放,即系统范围,要么自己重新实现这些对话框。

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

于 2011-08-25T23:42:52.823 回答
-1

对您来说最好的解决方案是创建一个表单,实现带有标签和关闭按钮的标题,并在表单的其余部分放置您需要的内容。在这种情况下,标签字体可以增加到您希望的任何大小。当你要给这个对话框穿什么鞋时,只需在表单上调用 .sohwDialog()

于 2012-02-14T08:26:48.947 回答