CodeZine(コードジン)

特集ページ一覧

WPF/WinFormsアプリをマイグレーションして、ComponentOneを利用したモダナイゼーションを行う

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2020/02/28 12:00
目次

WinFormsアプリのマイグレーションとモダナイゼーション

サンプルアプリ

 WinFormsアプリのケースでサンプルとして使用するのは以下のアプリです。

WinForms App Solution
WinForms App Solution
WinForms App 画面
WinForms App 画面

 実行し、Buttonをクリックすると以下のように表示されます。

実行中画面
実行中画面

WinFormsアプリのマイグレーション手順

マイグレーション時の注意点

 現在、WinFormsのフォームデザイナーは、VS2019のPreviewでのみ利用可能であり、製品版のVS2019では利用することができません。Previewは、評価目的の用途に限定されており、業務における開発時には利用不可となっています。

 現在はPreviewですが、時期がくれば利用できるようになると思われます。そこまでの暫定処置として以下の回避策を用いる必要があります。

 デザイナーを使った開発を行いたい場合は、.NET Frameworkベースのプロジェクトを残しておき、ソースを.NET Coreのプロジェクトにポーティングするなどの工夫が必要です。

 移行は前述した通り、以下の流れで実施します。

  1. .NET Portability Analyzerや.NET API アナライザーなどを使用して互換性の問題がないか確認する。
  2. Windows互換機能パックの利用を検討する。
  3. NuGetパッケージの更新を行う。
  4. プロジェクトの移行を行う。

 それでは、流れに沿ってWinFormsプロジェクトの移行とモダナイゼーションを行います。

  1. C1ThemeControllerを追加する。
  2. .NET Portability Analyzerを使用して、移行可能かどうかの判定を行う。
  3. NuGetからMicrosoft.DotNet.Analyzers.Compatibilityパッケージを追加し、.NET API アナライザーを実行する。
  4. 判定結果で問題が出た場合、Windows互換機能パックMicrosoft.Windows.Compatibilityを使用して回避可能かどうかを検討する。回避可能である場合はパッケージを追加する。
  5. プロジェクトファイルを移行する。

 上記のうち、1と5以外の手順については説明済みであるため、C1ThemeControllerを追加する手順、プロジェクトファイルの移行手順について紹介します。

ツールボックスからC1ThemeControllerを追加

 .NET Framework版のWinFormsアプリプロジェクトにC1ThemeControllerを追加します。ツールボックスから対象のフォームにC1ThemeControolerをドラッグアンドドロップすると以下のウインドウが表示されます。

C1ThemeControllerの編集
C1ThemeControllerの編集

 テーマは[アプリケーション全体][デザイン中のフォーム内][デザイン中のフォーム内にある特定のコントロール]の3つのスコープで適用することができます。

 コントロールが配置済みであるフォームにドラッグアンドドロップすると、フォーム内にあるコンポーネントを検出し、どのようにテーマを適用するか編集することができます。

 今回、ウインドウ内の各項目は以下の通り設定します。

  • アプリケーションテーマ(none)
  • c1ThemeController1テーマをExpressionDark
  • 各コンポーネントのテーマはすべてデフォルトボタンをクリックして、(default)を適用

 編集画面で[OK]ボタンをクリックすると「設定ファイルに内容を格納するか」の確認ダイアログが表示されるので[Yes]ボタンをクリックします。

C1ThemesConfirmation
C1ThemesConfirmation

 デザイナー上でThemesが適用されたことを確認することができます。

テーマの適用
テーマの適用

プロジェクトの移行手順

 プロジェクトは以下の手順で移行を行います。

  1. ソリューションにプロジェクトを追加
  2. プロジェクトにファイルを複写
  3. NuGetからパッケージを取得
  4. テスト

 互換性に関する手順を済ませたのち、ソリューションに移行先となる.NET CoreのWindows Form Appを追加します。

Add .NET Core WinForms Project
Add .NET Core WinForms Project

 追加したプロジェクトにファイルをコピーします。このとき、ComponentOneのライセンスファイルlicense.licxファイルがある場合、忘れずにコピーしてプロジェクトに追加します。

Copy Source Files
Copy Source Files

 パッケージが存在する場合は、Update Packageを実行します。ここでは、C1ThemeControlが追加されているので、NuGetでGrapeCityのレポジトリからパッケージをダウンロードします。

 .NET Coreプロジェクトを右クリックして、コンテキストメニューから[NuGetパッケージの管理]を選択します。

 パッケージソースにGrapeCityを指定します。続けて、キーワードをC1Themesで絞り込みを行い、インストールします。

Add NuGet Package to WinForms Project
Add NuGet Package to WinForms Project

 もし、パッケージソースにGrapeCityが追加されていない場合、ギアのアイコンをクリックします。

NuGet Settings
NuGet Settings

 利用可能なパッケージソースの上にある[+]ボタンをクリックします。

Add Package Source
Add Package Source
項目 設定値
名前 GrapeCity
ソース http://nuget.c1.grapecity.com/nuget
Update Package Source
Update Package Source

 [ライセンスへの同意]ウインドウが表示されるので、[同意]ボタンをクリックします。

License Agreement
License Agreement

 正しく移行ができると、以下の通り起動します。

移行完了
移行完了

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 森 博之(AZPower株式会社)(モリ ヒロユキ)

     Microsoft Azure、.NETテクノロジーを使用したWebサービスのプロダクトアーキテクト。他にも技術記事の執筆やトレーニング、セミナースピーカーを行っている。  Microsoft MVPをDeveloper Technologies、Visual Studio and Develo...

バックナンバー

連載:ComponentZine(ComponentOne Studio)

もっと読む

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5