True DBGrid for WinForms
オブジェクトとコレクションの使用

True DBGrid for WinForms は、最新の .NET 技術を使って開発されています。True DBGrid for WinForms コントロールとそのプログラム可能なコンポーネントは、すべて Microsoft の仕様に従って設計された .NET オブジェクトです。すでに Microsoft .NET のオブジェクトおよびコレクションのモデルに慣れている場合は、C1TrueDBGrid も問題なく使用できます。

はじめて .NET を使用する場合は、オブジェクトとコレクションを使用する, コードでTrue DBGrid for WinFormsオブジェクトを操作する方法を示す次のセクションをお読みください。この項では、C1TrueDBGrid オブジェクトをコード内で操作する方法について説明しています。各オブジェクトは、それぞれ異なるタスクを実行するために設計されていますが、それらを操作する方法はすべて同じです。これらに共通するプログラムの構成を理解していれば、簡単に使用したり、理解することができます。

フォーム上に C1TrueDBGrid コントロールを置くと、C1TrueDBGrid オブジェクトが作成されます。TrueDBGrid オブジェクトには、さまざまなオブジェクトを管理する8つの異なるコレクションが含まれます。また、これらのコレクションにそれぞれ対応し、そのコレクションオブジェクトを返すプロパティが C1TrueDBGrid オブジェクト内にあります。そのため、コード内でグリッドを使用する場合に、完全なコレクション名を覚えておく必要がありません。次に、これらのコレクションとプロパティの対応を示します。

コレクション 関連プロパティ
C1DataColumnCollection Columns プロパティ
C1DisplayColumnCollection DisplayColumns プロパティ
GridStyleCollection Styles プロパティ
SelectedColumnCollection SelectedCols プロパティ
SelectedRowCollection SelectedRows プロパティ
SplitCollection Splits プロパティ
ValueItemCollection Values プロパティ

デフォルトでは、SplitCollection オブジェクトには1つのSplit オブジェクトが含まれます。GridStyleCollection オブジェクトには、CaptionEditorEvenRowFilterBarFooterGroupHeadingHighlightRowInactiveNormalOddRowRecordSelector、および Selected という13個のデフォルトのStyle オブジェクトが含まれます。

コレクション内のオブジェクトを参照するには、0から始まるインデックスを使用します。次のように、Split オブジェクトのプロパティを設定または読み取ることができます。

C#
コードのコピー
// Splitオブジェクトプロパティを読み取ります
variable = this.c1TrueDBGrid1.Splits[0].Property;
 
// Splitオブジェクトプロパティを設定します
this.c1TrueDBGrid1.Splits[0].Property = variable;

コレクションの Item メソッドを使用して、コレクション内のオブジェクトの参照を作成できます。次のコードは、グリッドのデフォルトの Split オブジェクトへの参照を作成しています。

C#
コードのコピー
// Split0をSplitオブジェクトとして宣言します
C1.Win.C1TrueDBGrid.Split Split0;
 
// コレクション内の最初のSplitを参照するようにSplit0を設定します
Split0 = this.c1TrueDBGrid1.Splits[0];

上の例で、名前空間修飾子を使用していることに注意してください。他のコントロールとの潜在的な名前の競合を解決するために、名前空間修飾子を使用することをお勧めします。たとえば、同じプロジェクトで別のコントロールを使用しており、そのコントロールでも Split という名前のオブジェクトを定義している場合は、C1TrueDBGrid 名前空間修飾子が必要になります。その別のコントロールにも名前空間修飾子を付けます。

コレクションの Item メソッドは暗黙的に使用できるため、省略できます。

C#
コードのコピー
// Split0をSplitオブジェクトとして宣言します
C1.Win.C1TrueDBGrid.Split Split0;
 
// コレクション内の最初のSplitを参照するようにSplit0を設定します
Split0 = this.c1TrueDBGrid1.Splits[0];

ここで、Split0 を使用して、Split オブジェクトのプロパティを取得または設定したり、メソッドを実行することができます。

C#
コードのコピー
// Splitオブジェクトプロパティを読み取ります
variable = Split0.Property;
 
// Splitオブジェクトプロパティを設定します
Split0.Property = variable;
 
// Splitオブジェクトメソッドを実行します
Split0.Method (arg1, arg2, ...);

1つ以上のオブジェクトプロパティを取得および設定することもよくあります。

C#
コードのコピー
// Splitオブジェクトのプロパティを読み取ります
variable1 = this.c1TrueDBGrid1.Splits[0,0].Property1;
variable2 = this.c1TrueDBGrid1.Splits[0,0].Property2;
 
// Splitオブジェクトプロパティを設定します
this.c1TrueDBGrid1.Splits[0,0].Property1 = variable1;
this.c1TrueDBGrid1.Splits[0,0].Property2 = variable2;

このコードは、C1TrueDBGrid1.Splits(0,0) に何度もアクセスしているため、あまり効率よくありません。事前にこのオブジェクトへの参照を1つ作成しておき、それを繰り返し使用する方が効率的です。

C#
コードのコピー
// Split0をSplitオブジェクトとして宣言します
C1TrueDBGrid.Split Split0;
 
// コレクション内の最初のSplitを参照するようにSplit0を設定します
Split0 = this.c1TrueDBGrid1.Splits[0,0];
 
// Splitオブジェクトのプロパティを読み取ります
variable1 = Split0.Property1;
variable2 = Split0.Property2;
 
// Splitオブジェクトプロパティを設定します
Split0.Property1 = variable1;
Split0.Property2 = variable2;

これで、たいへん効率よくなり、コードも読みやすくなります。.NET アプリケーションで頻繁にコレクションオブジェクトにアクセスする場合は、このガイドラインに従うことで、コードのパフォーマンスを著しく向上させることができます。

このテクニックは、C1TrueDBGrid の他のオブジェクトとコレクション、および一般に Visual Studio のオブジェクトとコレクションにも同様に適用できます。グリッドの場合に特に重要なのは、C1DataColumn オブジェクトと C1DataColumnCollectionオブジェクトです(C1DisplayColumnオブジェクトも同様)。

C#
コードのコピー
// ColsをColumnsコレクションオブジェクトとして宣言し、C1TrueDBGrid1のC1DataColumnCollectionオブジェクトを参照するように設定します
C1.Win.C1TrueDBGrid.C1DataColumnCollection Cols;
Cols = this.c1TrueDBGrid1.Columns;
 
// Col0をC1DataColumnオブジェクトとして宣言し、コレクションの最初のColumnオブジェクトを参照するように設定します
C1.Win.C1TrueDBGrid.C1DataColumn Col0 = new C1TrueDBGrid.DataColumn();
Col0 = Cols[0];
 
// C1DataColumnオブジェクトのProperty1を読み取って設定します
variable1 = Col0.Property1;
Col0.Property1 = variable1;
 
// C1DataColumnオブジェクトのMethod1(Subとして宣言)を実行します
Col0.Method1 (arg1, arg2, ...);
 
// C1DataColumnオブジェクトのMethod2(関数として宣言)を実行します
variable2 = Col0.Method2(arg1);

次のコードは、グリッドの最初の列の複数のプロパティを設定しています。コレクションのインデックスが0で始まることに注意してください。

C#
コードのコピー
this.c1TrueDBGrid1.Columns[0].Property1 = variable1;
this.c1TrueDBGrid1.Columns[0].Property2 = variable2;

メンバを追加する

コレクションにオブジェクトを作成および追加するには、コレクションの Add メソッドを使用します。このメソッドは、唯一の引数としてオブジェクトを受け取ります。たとえば、列に値のアイテムを複数作成するには、ValueItemCollection オブジェクトに新しい ValueItem オブジェクトを追加します。

C#
コードのコピー
// ValueItemオブジェクトを作成します
C1TrueDBGrid.ValueItem v = new C1TrueDBGrid.ValueItem();
this.c1TrueDBGrid1.Columns[0].ValueItems.Values.Add(v);

このコードは、C1TrueDBGrid1 の ValueItemCollectionValueItem オブジェクトを追加します。また、次のように Insert メソッドを使用して、インデックスが1の ValueItem オブジェクトを作成することもできます。

C#
コードのコピー
// インデックス1のSplitオブジェクトを作成します
C1TrueDBGrid.ValueItem S;
this.c1TrueDBGrid1.Columns[0].ValueItems.Values.Insert(1, S);

Splitオブジェクトだけは、Add メソッドや RemoveAt メソッドを使用して、メンバを追加または削除することができません。スプリットを正しく追加または削除するには、Split オブジェクトの InsertHorizontalSplit / RemoveHorizontalSplit メソッドおよびInsertVerticalSplit / RemoveVerticalSplit メソッドを使用する必要があります。これらのメソッドは、設計時にグリッドを右クリックして表示されるコンテキストメニューからも使用できます。

メンバを削除する

コレクションに Add または Insert の各メソッドがどのように実装されているかに関係なく、アイテムを削除する構文は同じです。コレクションから既存のアイテムを削除するには、次のように、RemoveAt メソッドを使用します。

C#
コードのコピー
// インデックス1のSplitオブジェクトを削除します
this.c1TrueDBGrid1.Columns[0].ValueItems.Values.RemoveAt(1);

この文を実行すると、削除されたスプリットの場所が埋めるように、コレクションインデックスが1より大きいすべてのスプリットが1つずつ移動します。RemoveAt メソッドのパラメータは、削除されるメンバの場所であることに注意してください。

Count プロパティを使用する

コレクション内のオブジェクトの数を参照するには、次のように、コレクションの Count プロパティを使用します。

C#
コードのコピー
// C1TrueDBGrid1の分割数に等しい変数を設定します
variable = this.c1TrueDBGrid1.Splits.Count;

次の例のように、Count プロパティを使用して、コレクション内のすべてのオブジェクトを反復処理することもできます。このコードは、グリッド内の各 C1DataColumn オブジェクトの Caption 文字列を出力しています。

C#
コードのコピー
for (n = 0; n < this.c1TrueDBGrid1.Columns.Count; n++)
{
           Console.WriteLine(this.c1TrueDBGrid1.Columns[n].Caption);
}

Count プロパティは、列の追加や削除にも便利です。

C#
コードのコピー
// 列の数を決定します
int NumCols;
NumCols = this.c1TrueDBGrid1.Columns.Count;
 
// Columnsコレクションの最後に列を追加します
C1TrueDBGrid.C1DataColumn C = new C1TrueDBGrid.C1DataColumn();
this.c1TrueDBGrid1.Columns.Insert(NumCols, C);
 
// 実行時に作成された列はデフォルトでは非表示になるため、新しい列を表示します
this.c1TrueDBGrid1.Splits[0].DisplayColumns[C].Visible = true;
 
// 次のループは、グリッドからすべての列を削除します。
while ( this.c1TrueDBGrid1.Columns.Count > 0 )
{
           this.c1TrueDBGrid1.Columns.RemoveAt(0);
}                   

コレクション内のオブジェクトを効率よく反復処理できるように、foreach 文が用意されています。この文を使用すると、Count プロパティを使用する必要がありません。

C#
コードのコピー
C1TrueDBGrid.C1DataColumn c;
foreach (c In this.c1TrueDBGrid1.Columns)
{
    Console.WriteLine(c);
}

実際、コレクション内のオブジェクトを反復処理する場合は、foreach 文を使用することをお勧めします。