トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Visual Studio .NET 2003 C#、独自カスタムコントロール

[カテゴリ:言語]
[カテゴリ:C#]

フォームに追加可能な独自のコントロールを作るには?

参考URL

継承と属性プログラミングで実現するRAD開発 − @IT:
http://www.atmarkit.co.jp/fdotnet/winexp/winexp02/winexp02_02.html

独自コントロールの基本
http://park16.wakwak.com/~mimi/dotnet/control_org/basic.html

System.Windows.Forms.UserControl TextBox - Google 検索:
http://www.google.co.jp/search?q=System.Windows.Forms.UserControl+TextBox&hl=ja&lr=&rlz=1B2GGGL_jaJP176&start=10&sa=N

解説

以下の2つの方法がある。

1.UserControlから派生したカスタムコントロールを作る方法
「新しいプロジェクト→Windowsコンポーネント」
デザイナを使って既存のコントロールを配置
(既存のコントロールを複数集めて1つにするイメージ)

2.Controlから派生したカスタムコントロールを作る方法
「新しいプロジェクト→クラス ライブラリ」
デザイナを使わずにOnPaint直で描画

これらをコンパイルして、独自コントロールのDLLを作り、
これを親アプリから参照することで使えるようになる。

のだが・・・
DLLを作らずとも、カスタムコントロールが使える。

そもそも、上記1.はDLL化しなくても、親プロジェクトで
「プロジェクト→ユーザコントロール」を追加しただけで、
デザイナの「ツールボックス」の「マイユーザーコントロール」に
ユーザコントロールが登録される。

で、このユーザコントロールは、

public class UserControl1 : System.Windows.Forms.UserControl

として生成されるのだが、ここをSystem.Windows.Forms.TextBox
などと書きかえれば、DLL無しで上記2が実現できる。

ただし、この方法で作ったソースを他プロジェクトで読み込んでも
「ツールボックス」に表示されない。
どうも「プロジェクト→ユーザコントロール」で追加したときに
「ツールボックス」への登録を行ってるっぽい。

で、.csproj ファイルを開いてみると、どうもこのあたりで
ツールボックスの定義をおこなってるっぽい。

   <File
       RelPath = "UserControl1.cs"
       SubType = "Component"
       BuildAction = "Compile"
   />
   <File
       RelPath = "UserControl1.resx"
       DependentUpon = "UserControl1.cs"
       BuildAction = "EmbeddedResource"
   />

最終更新時間:2006年12月05日 22時19分42秒