.NET 6におけるWindows Formsのデザイナ問題とInputManの対応状況

.NET 6におけるWindows Formsのデザイナ問題とは?

InputManPlus for Windows Forms(インプットマンプラス)では、.NET6および .NET Framework 4.8をサポートしています。しかし .NET 6に対応したWindows Formsアプリケーションを開発する場合に、一部のプロパティがVisual Studioのデザイナ上で動作せず設定することができません。特にInputManのコントロールでは専用のダイアログを開発してデザイナで使用しているため、以下のように動作しないプロパティが多く存在する状況です。

スマートタグ

各コントロール

.NET Framework 4.8

スマートタグ(.NET Framework 4.8)

.NET 6

スマートタグ(.NET 6)
アクションリストが表示されない

カスタムダイアログ

GcTextBox.Format、GcNumber.Format、GcComboBox.Format、GcComboBox.Templateなど

.NET Framework 4.8

カスタムダイアログ(.NET Framework 4.8)

.NET 6

カスタムダイアログ(.NET 6)
プロパティに操作ボタンが表示されない

コレクションプロパティ

FieldCollectionEditor全般、ValidateCollectionEditor全般、GcDateTime.SpinButton、GcRichTextBox.ToolBarItemsなど

.NET Framework 4.8

コレクションプロパティ(.NET Framework 4.8)

.NET 6

コレクションプロパティ(.NET 6)
プロパティが表示されない

ドロップダウンプロパティ

.NET Framework 4.8

ドロップダウンプロパティ(.NET Framework 4.8)

.NET 6

ドロップダウンプロパティ(.NET 6)
プロパティに操作ボタンが表示されない

インタラクションエディター

.NET Framework 4.8

インタラクションエディター(.NET Framework 4.8)

.NET 6

インタラクションエディター(.NET 6)
自動でショートカットが割り当てられない

この問題の原因は?

InputManのデザイナが動作しない原因は、Windows Formsのデザイナでプロセスが2つに分かれたことにあります。


Visual Studioでは元々Visual Studioも設計中のアプリケーションも、devenv.exeプロセス上で動作していました。しかし .NET Coreの登場時に異なるフレームワークである .NET Frameworkと .NET Coreを同一のdevenv.exeで動作させることができず、デザイナをアウトオブプロセス(OOP)で対応することになりました。つまり .NET Frameworkでの開発時は .NET Frameworkデザイナが、.NET Coreや .NET 6での開発時はOOPデザイナが用いられることになりました。

このWindows Formsのデザイナに関する詳しい内容についてはマイクロソフトのブログで紹介されていますのでこちらをご覧ください。

InputManの取り組み

上記のブログでは以下のような記載があります。

WinForms Designer Extensibility SDK: Due to the conceptional differences between the OOP designer and the .NET Framework designer, providers for 3rd party controls for .NET will need to use a dedicated WinForms Designer SDK to develop custom Control Designers which run in the context of the OOP designer.

https://devblogs.microsoft.com/dotnet/state-of-the-windows-forms-designer-for-net-applications/

InputManなどのコントロールではこのSDK(Microsoft.WinForms.Designer.SDK)を使用してデザイナを開発する必要があります。グレープシティでは現在このSDKの解析を行い、各プロパティに対しOOPに則った対応を行っています。対応としては段階的に以下の3つのフェーズに分けて対応を進めていく予定です。

フェーズ1

フェーズ1では、スマートタグのアクションリストを表示できるようにします。

フェーズ1

フェーズ2

フェーズ2ではカスタムエディタ(「書式の設定」やGcComboBoxの「テンプレート」など)とコレクションエディタ(「サイドボタンの編集」や「検証定義エディタ」)の表示を調整し、プロパティから呼び出しできるようにします。

フェーズ2
カスタムエディタ
フェーズ2
コレクションエディタ

フェーズ1とフェーズ2は、来週12月7日にリリースを予定しているサービスパック「InputManPlus for Windows Forms 11.0J SP1」で対応します。

フェーズ3

ドロップダウンエディタ(「日付カレンダー」や「県フィルタ」)などの表示を調整し、プロパティから呼び出しできるようにします。

フェーズ3

フェーズ3は2023年以降にリリースのサービスパックで対応する予定です。

追記(2023.09)

現在までに対応しているフォームデザイン機能の詳細については、こちらをご覧ください。


製品の機能を手軽に体験できるデモアプリケーションやトライアル版も公開しておりますので、こちらもご確認ください。

また、ご導入前の製品に関するご相談、ご導入後の各種サービスに関するご質問など、お気軽にお問合せください。

\  この記事をシェアする  /