5

タッチスクリーンインターフェイスを使用して操作できるように、「タッチ」モードで実行できる必要がある大規模な.Netwinformsプロジェクトについて相談しています。アプリケーションアーキテクチャには、標準の.Netフォームとコントロールのフォント/表示を拡大するためのスケーリングロジックがすでに含まれており、カスタムコントロールもスケーリングを処理します。

問題は、アプリケーションがOpenFileDialogとSaveFileDialogを使用していることです。これらは、同じロジックを使用してスケーリングされません(基本的に、コントロールとフォームのFontプロパティのサイズを再帰的に調整します)。これらのダイアログは本質的にネイティブのWindowsダイアログであり、OpenFileDialogクラスは、実際には、それらと対話するための標準の.Netインターフェイスを公開する単なるラッパークラスであると思います。

1つの解決策は、これらのカスタムダイアログを実装することですが、それはおそらくやや大規模な作業になります。私たちが本当にやりたいのは、この特定のダイアログのフォントサイズをなんとかしてスケーリングすることです(おそらく、P / Invokeウィンドウハンドルの魔法を使って)?

タッチ対応の解決策の1つは、一般にWindowsのフォントサイズを調整することですが、そのアイデアはこの会社ではあまり普及しておらず、アプリ自体をスケーリングして、OSの残りの部分はそのままにしておきます。

では、これらのダイアログをより大きなフォントに拡大縮小する方法についての経験やアイデアはありますか?それとも、弾丸を噛んで、このためのカスタムダイアログを作成する必要がありますか?

4

2 に答える 2

1

タッチ対応の解決策の1つは、一般にWindowsのフォントサイズを調整することですが、そのアイデアはこの会社ではあまり普及しておらず、アプリ自体をスケーリングして、OSの残りの部分はそのままにしておきます。

参照するダイアログは「OSの残りの部分」の一部であり、そのままにしておきたいものです。共通のダイアログを使用して、コントロールパネルでフォントのスケーリングを強制的に増やすか、システム全体で使用するか、これらのダイアログを自分で再実装します。

別の方法として、適切なAPIを使用して別のWindowsデスクトップを作成し、そのフォントスケーリングを増やして、そこでアプリを実行することもできます(つまり、アプリにそのデスクトップを作成、使用、破棄させます)。次に、アプリとすべての一般的なダイアログがスケールアップされます。ただし、このアプリは1つの画面で他のアプリと一緒に表示されることはなく、アプリ内のデスクトップの切り替えに注意する必要があります(私は思います)。また、アプリがアクティブな場合は、アプリのGUI以外は表示されません。スタートボタン、タスクバー、ナッツはありません。詳細については、たとえばhttp://www.codeproject.com/KB/cs/csdesktopswitching.aspxを参照してください。

于 2011-08-25T23:42:52.823 に答える
-1

あなたにとって最良の解決策は、ラベルとクローズボットンを備えたヘッダーを実装するフォームを作成し、フォームの残りの部分に必要なものを配置することです。その場合、ラベルのフォントは任意のサイズに増やすことができます。このダイアログを表示するときは、フォームで.sohwDialog()を呼び出すだけです。

于 2012-02-14T08:26:48.947 に答える