2

上司がWindows7で実行したい古いWindowsモバイルアプリケーションがあります。これはすべて.NETであるため、アプリケーションはWindows上で実行されます(Windows CE用に作成されたと思います)が、小さなウィンドウで実行されます。それを爆破したいのですが、最初に頭に浮かんだのは、実際のプログラムをWPFビューボックス内にダンプすることでした。それはかなり単純で、他のアプリケーションのサイズを侵害することはありません。

私が見るすべての周りを検索すると、WinFormsユーザーコントロールをWPFに配置するためのWindowFormsHostに関する情報が表示されますが、完全な実行可能ファイルについては何も表示されません。これを行う方法があるかどうか誰かが知っていますか?

4

1 に答える 1

2

Viewbox は、純粋な WPF コントロールに対してのみ機能します。WinForms コントロールは WPF のスケール変換について何も知らないため、WinForms コントロールを拡大するために使用することはできません。

WinForms Control.DrawToBitmapメソッドを使用して何かを一緒にハックすることができます: WinForms コントロールをビットマップに描画し、ビットマップを拡大して画面に描画します。(WPF は必要ありません。純粋な WinForms でこれを行うことができます。) しかし、DrawToBitmap には深刻な制限があります。また、アプリをマウスやキーボードに応答させたい場合は、マウスやキーボードのイベントを元のコントロールに転送したり、自分でフォーカスを追跡したりするなど、多くの作業が必要になります。理論的には可能かもしれませんが、ほぼ確実です。実用的ではありません。

.NET EXE を別の .NET EXE にロードすることができます。EXE は DLL と同様のアセンブリであり、Assembly.Loadを使用して読み込むか、ソリューション エクスプローラーで [参照を追加] を使用することもできます。しかし、それほど風変わりなことをする必要はありません。まず、すべてのソース コードをホスト EXE に簡単にコンパイルできます。

おそらく最善の策は、フォーム デザイナーで各フォームを開き、すべてのコントロールを大きくすることです。大規模なアプリケーションでは大変な作業になる可能性がありますが、すべてを一度に実行する必要があるということはありません。おそらく、他のどの方法よりも作業が少なくて済みます。

于 2012-08-21T02:54:22.497 に答える