設計時にデザイナで行に配置されたセルは
実行時にはデータ数に応じてCloneメソッドで複製され、繰り返し表示されます。ヘッダとフッタに配置したセルはそのまま表示されます。
セルの選択
各セルは選択が可能かどうかの指定と、セルが選択されているかどうかの状態の判定、選択された場合とそうでない場合との外観の指定が可能です。選択をまったく許可しなかったり、選択をスキップして編集に遷移することもできます。(参考:選択モード、選択された行とセル、セルの選択禁止)
セルのインデックス
セルにはセクションに追加した順にインデックス(Cell.Index)が割り当てられます。実行時には、このインデックスを使用して行や列ヘッダセクションに配置されている任意のセルを指定できます。セルのインデックスは、Cell.Indexプロパティまたはデザイナの操作で変更できます。
セルのインデックスは特定の範囲のセルを連続して処理する場合や、不特定多数のセルを処理する場合に適しています。個別のセルを指定する場合は後述のセル名を使用してください。
セルのインデックスは特定の範囲のセルを連続して処理する場合や、不特定多数のセルを処理する場合に適しています。個別のセルを指定する場合は後述のセル名を使用してください。
セル名
セル名(Cell.Name)を指定すると、セルのコレクションからこの名をキーにして対象のセルにアクセスできます。これは、Windowsフォームでコントロールに名前をつけたとき、Form.Controlsプロパティから次のようなコードで対象のコントロールにアクセスできることに似ています。
MultiRowでは次のように名前をつけたセルにアクセスできます。
Dim TextBox1 As New TextBox() TextBox1.Name = "TextBox1" Me.Controls.Add(TextBox1) Me.Controls("TextBox1").Text = "Hello"
TextBox textBox1 = new TextBox(); textBox1.Name = "textBox1"; this.Controls.Add(textBox1); this.Controls["textBox1"].Text = "Hello";
MultiRowでは次のように名前をつけたセルにアクセスできます。
Imports GrapeCity.Win.MultiRow ' テンプレートを作成する Dim TextBoxCell1 As New TextBoxCell() TextBoxCell1.Name = "TextBoxCell1" GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {TextBoxCell1}) GcMultiRow1.RowCount = 3 ' 実行時の操作 GcMultiRow1.Rows(0).Cells("TextBoxCell1").Value = "Hello" GcMultiRow1.SetValue(1, "TextBoxCell1", "Hello")
using GrapeCity.Win.MultiRow; // テンプレートを作成する TextBoxCell textBoxCell1 = new TextBoxCell(); textBoxCell1.Name = "textBoxCell1"; gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] {textBoxCell1}); gcMultiRow1.RowCount = 3; // 実行時の操作 gcMultiRow1.Rows[0].Cells["textBoxCell1"].Value = "Hello"; gcMultiRow1.SetValue(1, "textBoxCell1", "Hello");
位置とサイズ
セルの位置は、セルの親となるセクションの左上隅からの相対座標で指定できます。これは、フォームにコントロールを配置する場合と同じです。セルのサイズは、高さと幅を指定できます。セルは矩形のため、これらの要素だけでセルの配置が確定します。
セルのリサイズ
既定の状態では、セルの配置に応じてセルのリサイズが自動的に決定されます。たとえば、ヘッダの幅に合わせて行のセルを配置するだけで、実行時にはヘッダのサイズ変更に合わせてセルの幅や高さが追従します。デザイナでは、スナップラインの補助によって位置調整をそれほど意識せずに指定できます。
マージンとパディング
フォーム上のコントロールと同じように、セルにはスタイルの一部としてマージンとパディングを指定できます。マージンは、セルの外側の余白を定義します。マージンはセルの内容に影響を与えないため、設計時にスナップラインを使う場合のみ有効な機能です。パディングはセルの内側の余白を定義します。
次の図は、buttonCell1にマージンとパディングを四辺それぞれ10ピクセルで定義した例です。青い線はマージン、赤い線はパディングを示します。buttonCell2とbuttonCell3は比較のためマージンとパディングを変更していません。
次の図は、buttonCell1にマージンとパディングを四辺それぞれ10ピクセルで定義した例です。青い線はマージン、赤い線はパディングを示します。buttonCell2とbuttonCell3は比較のためマージンとパディングを変更していません。
継承
セルを継承して独自のセル型を作成できます。基本セルを使用してゼロから新しいセルを作ることも、既存の組み込みのセルを継承して拡張機能を作ることもできます。作成したセル型はクラスとしてプロジェクト間での共有や再利用が可能です。
たとえば、フィルタリング用にカスタマイズされたFilteringTextBoxCellはTextBoxCellから派生し、左上のヘッダの用途に特化したColumnHeaderCellは汎用のHeaderCellから派生しています。
たとえば、フィルタリング用にカスタマイズされたFilteringTextBoxCellはTextBoxCellから派生し、左上のヘッダの用途に特化したColumnHeaderCellは汎用のHeaderCellから派生しています。
セルの共通の設定
すべてのセル型は共通のCellクラスから派生しています。これは、すべてのコントロールがSystem.Windows.Forms.Controlクラスから派生しているのに似ています。コントロールの場合と同じように、CellクラスはLocationやSizeといったセルの基本的な機能を提供しています。
セルのスタイル
セルのスタイルは、個々のセルから独立しています。たとえば、背景色や画像の設定は、特定のセルだけでなく、多くのセルで共通して使用されます。このような設定が、セルのスタイルとして共通のオブジェクトで提供されています。この仕組みは、DataGridViewコントロールで、セルのスタイルがDataGridViewCellStyleとして提供されているのと同じです。どのセルがスタイルのどの設定に対応しているかどうかはセルごとに異なりますが、多くのセルでは主要なスタイルの設定をサポートしています。
ヘッダセル
ヘッダセルはグリッドの操作を実行するための特別なセルです。たとえばセルを選択したり、ソートしたりできます。ヘッダセルは3種類が提供され、それぞれヘッダの3箇所に対応しています。
すべてのヘッダセルは、共通の設定を持つヘッダ型セルから派生しています。
すべてのヘッダセルは、共通の設定を持つヘッダ型セルから派生しています。
- ヘッダ型セル
- 列ヘッダ型セル
- 行ヘッダ型セル
- コーナーヘッダ型セル
編集
MultiRowはセル型の編集コントロールとして、.NET Frameworkの標準コントロールをそのまま実装しています。たとえば、文字列型セル(TextBoxCell)の編集には、System.Windows.Forms.TextBoxコントロールが表示されます。このため、セルの編集時の動作は、標準コントロールとまったく同じイベントを使用してカスタマイズできます。
MultiRowのセル編集コントロールの機能は、共通のインタフェースIEditingControlによって定義されます。このインタフェースでは、編集中のマウスカーソル、編集する値、親となるGcMultiRowコントロールへの参照、現在の行番号、ズームの値、編集コントロールの準備を定義します。
次の表は、セル型とセル編集コントロールの対応です。セル編集コントロールが存在しないセル型では、グリッドのイベントを使用します。
MultiRowのセル編集コントロールの機能は、共通のインタフェースIEditingControlによって定義されます。このインタフェースでは、編集中のマウスカーソル、編集する値、親となるGcMultiRowコントロールへの参照、現在の行番号、ズームの値、編集コントロールの準備を定義します。
次の表は、セル型とセル編集コントロールの対応です。セル編集コントロールが存在しないセル型では、グリッドのイベントを使用します。
セル型 | セル編集コントロール | 継承元 |
---|---|---|
ComboBoxCell | ComboBoxEditingControl | System.Windows.Forms.ComboBox |
DateTimePickerCell | DateTimePickerEditingControl | System.Windows.Forms.DateTimePicker |
DomainUpDownCell | DomainUpDownEditingControl | System.Windows.Forms.DomainUpDown |
NumericUpDownCell | NumericUpDownEditingControl | System.Windows.Forms.NumericUpDown |
MaskedTextBoxCell | MaskedTextBoxEditingControl | System.Windows.Forms.MaskedTextBox |
RichTextBoxCell | RichTextBoxEditingControl | System.Windows.Forms.RichTextBox |
TextBoxCell | TextBoxEditingControl | System.Windows.Forms.TextBox |
描画モード
MultiRowのセルは、.NET Frameworkの標準コントロールと同じようにGDIとGDI+の2種類の描画モードをサポートします。GDIは既定の描画モードとして、セルの編集に使用されるコントロールと同じ描画を提供します。GDI+は縦書き表示や均等割付に使用します。
詳細は「GDI+互換モード」を参照してください。
詳細は「GDI+互換モード」を参照してください。