MENU
最近更新したページ
タグ
---

C# プログラミング

コンポーネント関係の覚書。

コンポーネントによるプログラミング (MSDNヘルプリンク)
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_fxmclicc/html/d4d4fcb4-e0b8-46b3-b679-7ee0026eb9e3.htm

コンポーネント


コンポーネントとは、System.ComponentModel.IComponentを実装するクラスのこと。そのシンプルな実装はSystem.ComponentMode.Componentクラス。

System.ComponentModel.IComponent

IDisposableを拡張し、
Site : ISiteプロパティと、Disposedイベントをつけただけ。

System.ComponentModel.Component

IComponentを実装する。
protected virtual void Dispose(bool);
を定義している。Componentのサブクラスでは、リソース解放が必要であればDispose(bool)をoverrideする。

コントロール

コントロールとは、GUIをもつコンポーネントのこと。
System.Windows.Forms.Controlか、System.Web.UI.Controlのサブクラスのこと。
System.Windows.Forms.Controlのサブクラスは、Windowsフォームのコントロールとなる。
System.Web.UI.ControlのサブクラスはASP.NETのWebフォームのコントロールとなる。

ユーザーコントロール

ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.ja/CPref17/html/T_System_Windows_Forms_UserControl.htm

UserControlから派生したクラス(コントロール)。
System.Windows.Forms.UserControlなら、Windowsフォームのユーザーコントロール。
System.Web.UI.UserControlなら、Webフォームのユーザーコントロール。
空のコントロールに他のコントロールを張り付けて一つのコントロールにする。
コントロールの複合 (Composition)。

カスタムコントロール

既存のコントロールを拡張するコントロール。
具体的には、TextBoxとかButtonとかを継承して、独自クラスを作る。

使い分け

コントロールの種類に関するアドバイス
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_fxmclictl/html/5235fe9d-c36a-4c08-ae76-6cb90b50085e.htm

ログインパネルとか、入力フォームとか、他のコントロールを組み合わせて一つの機能を提供する→ユーザーコントロール

ListBoxや、Buttonに独自機能を追加する。→カスタムコントロール

既存のコントロールとは全く違うものを作る→Controlクラスを継承して構築

VS2005での注意

オプション→「Windowsフォームデザイナ」→「全般」→「AutoToolBoxPopulate」がTrueになってないと、プロジェクト内のカスタムコントロールなりユーザーコントロールが、ツールボックスに自動で追加されない。

DataGridViewの使い方

SQLServerとか使わずに、プログラム内のリストをDataGridViewで表示するやりかた。
ListViewをDetailにして表示より柔軟。編集とかできるし。

1.表示したいデータの1行(レコード)に当たるクラスか構造体を作る。
作ったクラスか構造体を以降「Record」とする。
2.フォームにDataGridViewを置く。
以降、できたDataGridViewをdataGridView1と仮定。
3.フォームにBindingSourceコンポーネントを置く。
以降、できたコンポーネントをbindingSource1と仮定。
4.メニューの「データ」→「新しいデータソースの追加」→「オブジェクト」
1のRecordを選択。
5.bindingSource1のDataSourceで、4で作ったデータソースを選ぶ
6.dataGridView1のDataSourceをbindingSource1にする。
ここで直接4で作ったデータソースを選ぶと、自動的にBindingSourceができるので、それでも良い。 この時点で、Recordのプロパティがカラムとして、dataGridView1に入る。
7.dataGridView1のカラムを適当に編集。
8.フォームのLoadイベントあたりで、bindingSource1.DataSourceに、BindingList<Record>のインスタンスを割り当てる。
BindingList<Record>じゃなくて、IBindingListを実装するクラスを自分で作っても良い。

これで、自動的に全部のセルが埋まるはず。やったね。
2006年10月18日(水) 18:54:15 Modified by bitflux




スマートフォン版で見る