コンポーネントの作成 (非ビジュアルコンポーネントの作成) - C#
C#でWIndows Form アプリケーションのコンポーネント (非ビジュアルコンポーネント)の作成手順とコードを紹介します。
手順
Windows Formアプリケーションを作成します。
コンポーネントの作成
ソリューションエクスプローラーで作成したWindows Formアプリケーションのプロジェクトのノードを選択し、右クリックします。
ポップアップメニューの[追加]メニューの[新しい項目]をクリックします。
[新しい項目の追加]ダイアログが表示されます。
中央のエリアのリストの[コンポーネントクラス]の項目をクリックして選択します。
[名前]のテキストボックスにファイル名を入力します。今回は"MyComponent.cs" とします。設定後[追加]ボタンをクリックします。
MyComponent.csファイルが追加されます。
生成されたコンポーネントのソースコードは以下になります。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormComponent
{
public partial class MyComponent : Component
{
public MyComponent()
{
InitializeComponent();
}
public MyComponent(IContainer container)
{
container.Add(this);
InitializeComponent();
}
}
}
namespace WindowsFormComponent
{
partial class MyComponent
{
/// <summary>
/// 必要なデザイナー変数です。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 使用中のリソースをすべてクリーンアップします。
/// </summary>
/// <param name="disposing">マネージド リソースを破棄する場合は true を指定し、その他の場合は false を指定します。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region コンポーネント デザイナーで生成されたコード
/// <summary>
/// デザイナー サポートに必要なメソッドです。このメソッドの内容を
/// コード エディターで変更しないでください。
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
}
#endregion
}
}
プロジェクトをビルドします。ビルド後、ツールパレットに、"MyComponent" のコンポーネントが追加されます。
コンポーネントの実装
コンポーネントのコードファイルを以下のコードに変更します。
Calcメソッドを追加します。2つの引数を受け取り、加算した値を返すメソッドです。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormComponent
{
public partial class MyComponent : Component
{
public MyComponent()
{
InitializeComponent();
}
public MyComponent(IContainer container)
{
container.Add(this);
InitializeComponent();
}
public int Calc(int a, int b)
{
return a + b;
}
}
}
コンポーネントのフォームへの配置
コンポーネントをフォームに配置します。フォームデザイナを表示し、ツールボックスの"MyComponent"をフォームにドラッグ&ドロップします。
コンポーネントをドロップした状態が下図です。
フォームデザイナの下部に非ビジュアルなコンポーネント(コントロール)のエリアが追加され、"myComponent1"コンポーネントが追加された状態になります。
プログラムの実装
UI
フォームにボタンとテキストボックスを追加します。
コード
フォームのコードを以下のコードに変更します。
namespace WindowsFormComponent
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int r = myComponent1.Calc(12, 6);
textBox1.Text = string.Format("{0:d}",r);
}
}
}
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。MyComponentのCalcメソッドの実行結果がテキストボックスに表示されます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用