リサイズはクリックかドラッグ

フォームデザイン機能

ComponentOne 2020Jv1 リリース(2020年4月)時点において、.NET Core をターゲットとする Windows フォームデザイナはプレビュー版が公開されています(Updates on .NET Core Windows Forms designer)。ただし、プレビュー版では、組み込みの標準コントロールのみがサポートされており、カスタムコントロールはまだサポートされておりません。この Windows フォームデザイナ上で、本製品のコンポーネントを使用したフォームデザインを行うことはできません。

そのため、フォーム上へのコントロールの配置やレイアウト調整については、別の方法を用いて行う必要があります。考えられる対処法について、いくつかご案内いたします。

対処方法1:コードビハインドを使用する

この対処方法では、フォーム上へのコントロールの配置やレイアウト調整などを、すべてコード上で実行することになります。以下の例では、C1FlexGrid コントロールをフォーム上に配置する処理を InitializeLayout メソッドとして定義し、Form1 のコンストラクタ内でそれを呼び出しています。

C#
public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();
    InitializeLayout();
  }

  private void InitializeLayout()
  {
    this.SuspendLayout();
    var flexgrid = new C1.Win.C1FlexGrid.C1FlexGrid();
    this.Controls.Add(flexgrid);
    flexgrid.Dock = DockStyle.Fill;
    this.ResumeLayout();
  }
}
対処方法2:.NET Framework をターゲットとする Windows フォームデザイナを使用する

この方法は、メインの .NET Core プロジェクトとは別に .NET Framework をターゲットとするフォームデザイン用のプロジェクトを追加し、そのプロジェクト上で Windows フォームデザイナを使用する方法となります。プロジェクトの作成とアセンブリ参照の追加 の手順に従って作成した .NET Core プロジェクト(WindowsFormsApp1)を元に、その手順を説明します。

  1. ソリューションに対して、.NET Framework 4.5.2 以上をターゲットとする Windows フォームプロジェクトを追加します。以下の例では、プロジェクト名を「Designer」としています。

    Net Core Win 09
    Net Core Win 10
    Net Core Win 11
  2. 「Designer」プロジェクトのプロパティにて、既定の名前空間を「WindowsFormsApp1」プロジェクトと同じ(WindowsFormsApp1)に変更します。これにより、「Designer」プロジェクトにフォームを追加した場合、その既定の名前空間が"WindowsFormsApp1"となります。

    Net Core Win 12
  3. プロジェクト間で同じ名前のフォームファイルが混在することによるエラーの発生を回避するため、「WindowsFormsApp1」プロジェクト内および「Designer」プロジェクト内のフォームを一旦すべて削除します。

  4. 「Designer」プロジェクト内に、新規フォームを追加します(ファイル名は任意です)。

  5. 次に、「WindowsFormsApp1」プロジェクトに対して、「Designer」プロジェクト内のフォームをリンクとして追加します。リンクとして追加するには、「既存項目の追加」ダイアログにて、ドロップダウンから「リンクとして追加」を選択します。

    Net Core Win 19

    ソリューションエクスプローラー上では、「Designer」プロジェクト内の Form1.cs が、「WindowsFormsApp1」プロジェクト内にリンクとして追加されていることが示されます(アイコンの形状にご注目ください)。

    Net Core Win 13

    これにより、「Designer」プロジェクトのフォームは .NET Core プロジェクト(WindowsFormsApp1)と .NET Framework プロジェクト(Designer)の両方から参照されるようになります。

ここまでの手順により、ソリューションはメインのプロジェクト(WindowsFormsApp1)とデザイン用のプロジェクト(Designer)の2つを持つことになります。「Designer」プロジェクト内のフォームは、.NET Framework をターゲットとする Windows フォームプロジェクト用のフォームデザイナにて編集することができます。従来の .NET Framework プロジェクトと同様、ツールボックスから ComponentOne のコントロールをフォーム上にドラッグして配置したり、スマートデザイナなどのデザイン時機能を使用してコントロールのレイアウトをカスタマイズすることができるようになります。

「Designer」プロジェクトで編集されたフォームは、そのまま「WindowsFormsApp1」プロジェクトで利用できます。例えば、「Designer」プロジェクトでフォーム上に C1FlexGrid コントロールを配置しておき、「WindowsFormsApp1」プロジェクトをデバッグ実行すると、C1FlexGrid が配置されたフォームが起動し、問題なく利用できることが確認できます。

Net Core Win 14
Net Core Win 15
メモ メモ

フォームデザイナにおいて、ツールボックスに登録されている ComponentOne のコントロールは、.NET Core プロジェクトにてインストールされた Nuget パッケージのものではなく、Visual Studio IDE にあらかじめ登録されているものとなります。ツールボックスのコントロールをドラッグしてフォームに配置しても、.NET Core プロジェクトに対してそのコンポーネントに対応する Nuget パッケージのインストールは自動では行われません。使用したコントロールに合わせて、別途対応する Nuget パッケージをインストールしてください。

対処方法3:ComponentOne テンプレートを使用する

WinForms エディションでは、コンポーネントがあらかじめ組み込まれているプロジェクトテンプレートをいくつか用意しています。このうち、.NET Core 用プロジェクトテンプレートでは、前述の「対処方法2:.NET Framework をターゲットとする Windows フォームデザイナを使用する」で説明したような、メインの .NET Core プロジェクトとデザイン用の .NET Framework プロジェクトの2つを含む形式でソリューションを作成するようになっています。とくに、「Windows Forms 空のアプリケーション」テンプレートでは、C1Themes 以外のコンポーネントは組み込まれていないシンプルな構成なので、新規にフォームデザインを行う場合はこのテンプレートを使用すると便利です。以下に、「Windows Forms 空のアプリケーション」テンプレートを使用して新規ソリューションを作成する手順を示します。

  1. Visual Studio 2019 を起動し、スタート画面にて、「新しいプロジェクトの作成」を選択します。

    Using Visual Studio Templates s01
  2. 「新しいプロジェクトの作成」画面にて、「Windows Forms 空のアプリケーション (.NET Core 3.0用)(C#)」を選択します。

    Net Core Win 16
    メモ メモ

    「Windows Forms 空のアプリケーション」テンプレートには、プロジェクトの種類として「C1」がタグ付けされています。これらで絞り込むことで、テンプレートが見つけやすくなります。

  3. プロジェクト名およびソリューション名を指定し、作成ボタンをクリックします。

    Net Core Win 17

    これにより、プロジェクトおよびソリューションが作成され、生成されたソリューションの内容がソリューションエクスプローラーに表示されます。

    Net Core Win 18
参照