ウィンドウコントロールのコンポーネントの作成 (ビジュアルコンポーネントの作成) - C#
C#でWindows Formのウィンドウコントロールのコンポーネントを作成する手順とコードを紹介します。
概要
PanelやButtonといったウィンドウコントロールがありますが、独自のウィンドウコントロールを作成してコンポーネント化して利用したい場合があります。
この記事では、Windows Formでのウィンドウコントロールコンポーネントの作成手順とコンポーネントのコードを紹介します。
手順
コンポーネントの作成
Windows Formアプリケーションを作成します。
ソリューションエクスプローラーでプロジェクトのノードをクリックして選択し、右クリックします。
ポップアップメニューが表示されますので、[追加]メニューの[新しい項目]をクリックします。
[新しい項目の追加]ダイアログが表示されます。
ダイアログの中央のリストから[コンポーネントクラス]を選択します。
ダイアログ下部の[名前]のテキストボックスにファイル名を設定します。今回は"WindowControlComponent.cs" とします。
WindowControlComponent.cs のファイルが追加されます。プロジェクトをビルドすると、ツールボックスウィンドウの上部に
[WindowControlComponent]のコントロールが表示されます。
コード
コンポーネントのコードを修正します。
今回はウィンドウコントロールを作成するため、基底クラスをComponentから、Controlに変更します。
また、OnPaintメソッドをオーバーライドし、コントロールの外枠を青線で描画するコードを実装します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormWindowControlComponent
{
public partial class WindowControlComponent : Component
{
public WindowControlComponent()
{
InitializeComponent();
}
public WindowControlComponent(IContainer container)
{
container.Add(this);
InitializeComponent();
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormWindowControlComponent
{
public partial class WindowControlComponent : Control
{
public WindowControlComponent()
{
InitializeComponent();
}
public WindowControlComponent(IContainer container)
{
container.Add(this);
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
Pen p = new Pen(Color.Blue,1);
e.Graphics.DrawRectangle(p, new Rectangle(0, 0, this.Width - 1, this.Height - 1));
}
}
}
namespace WindowsFormWindowControlComponent
{
partial class WindowControlComponent
{
/// <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
}
}
ウィンドウコントロールの配置
ツールボックスの[WindowControlComponent]の項目をドラッグしてフォームにドロップします。
コントロールがフォームにドロップされると、WindowControlComponentがウィンドウに配置されます。コントロールの外枠が青線で描画されることが確認できます。
コントロールのサイズを変更します。
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。作成したウィンドウコントロールが表示されました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用