MESCIUS MultiRow for Windows Forms 12.0J
データの設定と取得

GcMultiRowコントロールでは、さまざまな方法でセルの値を取得できます。
MultiRowのセルにおいて、値は次のように処理されます。
  1. Cell.Value
    Objectとしてセルの値を格納する。
  2. Cell.FormattedValue
    セルの値をデータ型やスタイルに基づいて書式済みの値として変換する。
  3. Cell.DisplayText
    書式済みの値を、各セル型の固有の設定に応じて表示用の値に変換する。

セルの値(Cell.Valueプロパティ)以外の値は読み取り専用です。
セル値の設定/取得
セルの値はGcMultiRow.SetValueメソッドで設定します。次のコードは、1行目の2番目のセルに値を設定します。

GcMultiRow1.SetValue(0, 1, "ABC")
gcMultiRow1.SetValue(0, 1, "ABC");


セルの値を取得するには、GcMultiRow.GetValueメソッドを使用します。次のコードは、1行目の2番目のセルの値を取得し、コンソールに出力します。

Dim cellValue As Object = GcMultiRow1.GetValue(0, 1)
Console.WriteLine(cellValue)
object cellValue = gcMultiRow1.GetValue(0, 1);
Console.WriteLine(cellValue);


次のように、行やセルのインスタンスを経由してセルの値を取得または設定することもできます。値の操作だけを目的とする場合はGcMultiRow.GetValueメソッドおよび GcMultiRow.SetValueメソッドの使用が推奨されます。

GcMultiRow1.Rows(0).Cells(1).Value = "DEF"
GcMultiRow1(0, 2).Value = "GHI"
Console.WriteLine(GcMultiRow1(0, 2).Value)
gcMultiRow1.Rows[0].Cells[1].Value = "DEF";
gcMultiRow1[0, 2].Value = "GHI";
Console.WriteLine(gcMultiRow1[0, 2].Value);


セルの値は常にSystem.Object型です。これはセルの値のデータ型として、Cell.ValueTypeプロパティで確認できます。
セルの書式指定済みの値の取得
セルに関連付けられた書式指定済みの値を取得するには、GcMultiRow.GetFormattedValueメソッドを使用します。次のコードは、1行目の2番目のセルの値を取得し、コンソールに出力します。

Dim formattedValue As Object = GcMultiRow1.GetFormattedValue(0, 1)
Console.WriteLine(formattedValue)
object formattedValue = gcMultiRow1.GetFormattedValue(0, 1);
Console.WriteLine(formattedValue);


次のように、行やセルのインスタンスを経由して書式指定済みの値を取得することもできます。値の取得だけを目的とする場合はGcMultiRow.GetFormattedValueメソッドの使用が推奨されます。

Dim formattedValue As Object = GcMultiRow1(0, 1).FormattedValue
Console.WriteLine(formattedValue)
object formattedValue = gcMultiRow1[0, 1].FormattedValue;
Console.WriteLine(formattedValue);


書式指定済みの値のデータ型は、Cell.FormattedValueTypeプロパティで取得できます。Cell.ValueTypeプロパティと異なり、Cell.FormattedValueTypeプロパティでは実際の表示に即したデータ型が返ります。たとえば、次のコードの結果は文字列型ではString、日付型ではDate(C#ではSystem.DateTime)になります。

Console.WriteLine(GcMultiRow1(0, 1).FormattedValueType)
Console.WriteLine(gcMultiRow1[0, 1].FormattedValueType);


セルが編集中の場合や、値がコミットされていない状態のとき、セルの値は確定していないため、Cell.FormattedValueプロパティでは最新の値を取得できない可能性があります。編集状態やコミットの有無に関係なく、セルの現在の書式指定済みの値を取得するにはGcMultiRow.GetEditedFormattedValueメソッドまたはCell.EditedFormattedValueプロパティを使用します。

セルの値の書式はGcMultiRow.CellFormattingイベントでカスタマイズできます。
セルに表示されている値の取得
セルに表示されている値を取得するには、GcMultiRow.GetDisplayTextメソッドを使用します。

Dim displayValue As String = GcMultiRow1.GetDisplayText(0, 1)
Console.WriteLine(displayValue)
string displayValue = gcMultiRow1.GetDisplayText(0, 1);
Console.WriteLine(displayValue);


次のように、行やセルのインスタンスを経由してセルに表示されている値を取得することもできます。値の操作だけを目的とする場合はGcMultiRow.GetDisplayTextメソッドの使用が推奨されます。

Console.WriteLine(GcMultiRow1(0, 2).DisplayText)
Console.WriteLine(gcMultiRow1[0, 2].DisplayText);


セルの値は常に String 型です。

  • チェックボックス型セルは常にCheckBoxCell.Textプロパティを返します。セルの値を返しません。
  • ラジオグループ型セルは選択されているアイテムの文字列を返します。もしアイテムが選択されていない場合は、String.Emptyを返します。
  • イメージ型セルとトラックバー型セルは常にString.Emptyを返します。
セル編集中の値の取得
セルの編集中の値はSystem.Windows.Forms.Control.Textプロパティで取得します。

Dim editingControlValue As String = GcMultiRow1.EditingControl.Text
Console.WriteLine(editingControlValue)
string editingControlValue = gcMultiRow1.EditingControl.Text;
Console.WriteLine(editingControlValue);

セルの既定値の取得
行が新規に追加されたときのセルの既定値を取得するには、テンプレートのセルの値を参照します。
実行時に行を追加するタイミングでセルの既定値を設定するにはGcMultiRow.NewRowNeededイベントを使用します。
列ヘッダセクションのセル値の取得/設定
列ヘッダセクションに配置されたセルの値を取得するには、列ヘッダセクションやセルのインスタンスを経由してセルの値を取得または設定します。

GcMultiRow1.ColumnHeaders(0).Cells(1).Value = "ABC"
Console.WriteLine(GcMultiRow1.ColumnHeaders(0).Cells(2).Value)
gcMultiRow1.ColumnHeaders[0].Cells[1].Value = "ABC";
Console.WriteLine(gcMultiRow1.ColumnHeaders[0].Cells[2].Value);

   
関連トピック

 

 


© MESCIUS inc. All rights reserved.