このドキュメントはアーカイブされており、メンテナンスされていません。

DataGridTableStyle クラス

System.Windows.Forms.DataGrid コントロールによって実行時に描画されるテーブルを表します。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

public class DataGridTableStyle : Component, IDataGridEditingService
public class DataGridTableStyle extends Component implements IDataGridEditingService
public class DataGridTableStyle extends Component implements IDataGridEditingService
適用できません。

System.Windows.Forms.DataGrid コントロールは、グリッド形式でデータを表示します。DataGridTableStyle は、描画されたグリッドだけを表すクラスです。このグリッドは、グリッドのデータ ソースとなる DataTable クラスとは区別する必要があります。DataGridTableStyle は、コントロールで描画されたとおりに正確にグリッドを表します。このため、DataGridTableStyle を使用すると、各 DataTable のグリッドの外観を制御できます。特定の DataTable のデータを表示するときに使用する DataGridTableStyle を指定するには、MappingNameDataTableTableName に設定します。

TableStyles プロパティによって取得される GridTableStylesCollection には、System.Windows.Forms.DataGrid コントロールで使用される DataGridTableStyle オブジェクトがすべて格納されます。このコレクションには、必要な数の DataGridTableStyle オブジェクトを格納できますが、各オブジェクトの MappingName は一意である必要があります。これにより、同じデータに対して、ユーザー設定に応じて実行時に異なる DataGridTableStyle を適用できます。上記の処理を実現するには、次の操作を実行します。

  1. GridTableStylesCollectionDataGridTableStyle オブジェクトを格納します。DataGridTableStyleGridTableStylesCollection 内に存在し、その MappingName プロパティ値が DataTable オブジェクトの TableName プロパティと等しい場合、DataTable はこの DataGridTableStyle を使用して表示されます。一致する MappingName 値を持つ DataGridTableStyle が存在しない場合、DataTable はデータ グリッド テーブルの既定のスタイルを使用して表示されます。

  2. 別のグリッド スタイルが必要な場合は、Item プロパティを使用して、適切な DataGridTableStyle を選択し (TableNameItem プロパティに渡す)、返されたオブジェクトの MappingName を新しい値に設定します。

  3. Item プロパティを使用して必要な DataGridTableStyle を選択し、その MappingNameDataTableTableName に設定します。

注意に関するメモ注意 :

必ず DataGridColumnStyle オブジェクトを作成して GridColumnStylesCollection に追加してから、DataGridTableStyle オブジェクトを GridTableStylesCollection に追加します。有効な MappingName 値を持つ空の DataGridTableStyle をコレクションに追加すると、自動的に DataGridColumnStyle オブジェクトが生成されます。そのため、MappingName 値が重複する新しい DataGridColumnStyle オブジェクトを GridColumnStylesCollection に追加しようとすると、例外がスローされます。

現在表示されている DataGridTableStyle を確認するには、System.Windows.Forms.DataGridDataSource プロパティと DataMember プロパティを使用して、CurrencyManager を返します。データ ソースに ITypedList インターフェイスが実装されている場合は、GetListName メソッドを使用すると、現在のテーブルの MappingName を返すことができます。上記の例を次の C# コードに示します。

 private void PrintCurrentListName(DataGrid myDataGrid){
  CurrencyManager myCM = (CurrencyManager)
  BindingContext[myDataGrid.DataSource, myDataGrid.DataMember];
  IList myList = myCM.List;
  ITypedList thisList = (ITypedList) myList;
  Console.WriteLine(thisList.GetListName(null));
 }

DataSet 内に DataRelation オブジェクトによって関連付けられている複数の DataTable オブジェクトが格納されていて、現在表示されている DataTable が子テーブルである場合、DataMember は、TableName.RelationName という形式 (最も簡単な場合) の文字列を返します。DataTable が階層構造内のさらに下位に位置する場合、この文字列は、親テーブルの名前に、そのテーブルのレベルに到達するために必要な RelationName 値が続く形で表されます。たとえば、階層的なリレーションシップを持ち、上から順に RegionsCustomers、および Orders という名前が付いている 3 つの DataTable オブジェクトと、RegionsToCustomers および CustomersToOrders という名前の 2 つの DataRelation オブジェクトがある場合、DataMember プロパティは、"Regions.RegionsToCustomers.CustomersToOrders" を返します。ただし、この場合の MappingName は "Orders" になります。

DataGridTableStyle オブジェクトのコレクションは、System.Windows.Forms.DataGridTableStyles プロパティによって返されます。

DataGridTableStyle が表示されると、その DataGridTableStyle の設定値によって System.Windows.Forms.DataGrid コントロールの設定値がオーバーライドされます。特定の DataGridTableStyle プロパティに値が設定されていない場合は、代わりに System.Windows.Forms.DataGrid コントロールの値が使用されます。System.Windows.Forms.DataGrid コントロールのプロパティをオーバーライドするために設定できる DataGridColumnStyle プロパティを次に示します。

DataGrid をオブジェクトの厳密に型指定された配列にバインドするには、オブジェクト型にパブリック プロパティが含まれている必要があります。配列を表示する DataGridTableStyle を作成するには、DataGridTableStyle.MappingName プロパティを typename に設定します。なお、この typename は実際のオブジェクト型名に置き換えてください。また、MappingName プロパティでは大文字と小文字が区別されることに注意してください。型の名前は正確に指定する必要があります。例については、MappingName プロパティのトピックを参照してください。

また、DataGridArrayList にバインドできます。ArrayList の特長は、複数の型のオブジェクトを格納できることです。ただし、DataGrid はリスト内のすべての項目の型が 1 番目の項目の型と同じ場合に限り、リストにバインドできます。つまり、すべてのオブジェクトの型が同じであるか、リスト内の最初の項目と同じクラスからすべてのクラスが継承している必要があります。たとえば、リスト内の最初の項目が Control の場合、2 番目の項目は (Control から継承した) TextBox にできます。逆に、1 番目の項目が TextBox の場合、2 番目のオブジェクトが Control になることはできません。さらに、ArrayList がバインドされている場合には項目が含まれている必要があり、DataGridTableStyle 内のオブジェクトにパブリック プロパティが含まれている必要があります。空の ArrayList の場合、空のグリッドとなります。ArrayList にバインディングするときは、DataGridTableStyleMappingName を "ArrayList" (型の名前) に設定します。

2 つの DataGridTableStyle インスタンスを作成し、各オブジェクトの MappingNameDataSet 内の DataTableTableName に設定するコード例を次に示します。さらに、この例では DataGridColumnStyle オブジェクトを各 DataGridTableStyle オブジェクトの GridColumnStylesCollection に追加しています。実行例については、System.Windows.Forms.DataGrid のトピックを参照してください。

private void AddCustomDataTableStyle()
   {
      /* Create a new DataGridTableStyle and set
      its MappingName to the TableName of a DataTable. */
      DataGridTableStyle ts1 = new DataGridTableStyle();
      ts1.MappingName = "Customers";

      /* Add a GridColumnStyle and set its MappingName 
      to the name of a DataColumn in the DataTable. 
      Set the HeaderText and Width properties. */
      
      DataGridColumnStyle boolCol = new DataGridBoolColumn();
      boolCol.MappingName = "Current";
      boolCol.HeaderText = "IsCurrent Customer";
      boolCol.Width = 150;
      ts1.GridColumnStyles.Add(boolCol);
      
      // Add a second column style.
      DataGridColumnStyle TextCol = new DataGridTextBoxColumn();
      TextCol.MappingName = "custName";
      TextCol.HeaderText = "Customer Name";
      TextCol.Width = 250;
      ts1.GridColumnStyles.Add(TextCol);


      // Create the second table style with columns.
      DataGridTableStyle ts2 = new DataGridTableStyle();
      ts2.MappingName = "Orders";
      // Change the colors.
      ts2.ForeColor = Color.Yellow;
      ts2.AlternatingBackColor = Color.Blue;
      ts2.BackColor = Color.Blue;
      
      // Create new DataGridColumnStyle objects.
      DataGridColumnStyle cOrderDate = 
      new DataGridTextBoxColumn();
      cOrderDate.MappingName = "OrderDate";
      cOrderDate.HeaderText = "Order Date";
      cOrderDate.Width = 100;
      ts2.GridColumnStyles.Add(cOrderDate);

      PropertyDescriptorCollection pcol = this.BindingContext
      [myDataSet, "Customers.custToOrders"].GetItemProperties();
      
      DataGridColumnStyle csOrderAmount = 
      new DataGridTextBoxColumn(pcol["OrderAmount"], "c", true);
      csOrderAmount.MappingName = "OrderAmount";
      csOrderAmount.HeaderText = "Total";
      csOrderAmount.Width = 100;
      ts2.GridColumnStyles.Add(csOrderAmount);

      // Add the DataGridTableStyle objects to the collection.
      myDataGrid.TableStyles.Add(ts1);
      myDataGrid.TableStyles.Add(ts2);
   }


private void AddCustomDataTableStyle()
{
    /*  Create a new DataGridTableStyle and set
        its MappingName to the TableName of a DataTable. 
     */
    DataGridTableStyle ts1 = new DataGridTableStyle();
    ts1.set_MappingName("Customers");
    /*  Add a GridColumnStyle and set its MappingName 
        to the name of a DataColumn in the DataTable. 
        Set the HeaderText and Width properties. 
     */
    
    DataGridColumnStyle boolCol = new DataGridBoolColumn();
    boolCol.set_MappingName("Current");
    boolCol.set_HeaderText("IsCurrent Customer");
    boolCol.set_Width(150);
    ts1.get_GridColumnStyles().Add(boolCol);

    // Add a second column style.
    DataGridColumnStyle textCol = new DataGridTextBoxColumn();
    textCol.set_MappingName("custName");
    textCol.set_HeaderText("Customer Name");
    textCol.set_Width(250);
    ts1.get_GridColumnStyles().Add(textCol);

    // Create the second table style with columns.
    DataGridTableStyle ts2 = new DataGridTableStyle();
    ts2.set_MappingName("Orders");
    // Change the colors.
    ts2.set_ForeColor(Color.get_Yellow());
    ts2.set_AlternatingBackColor(Color.get_Blue());
    ts2.set_BackColor(Color.get_Blue());

    // Create new DataGridColumnStyle objects.
    DataGridColumnStyle cOrderDate = new DataGridTextBoxColumn();
    cOrderDate.set_MappingName("OrderDate");
    cOrderDate.set_HeaderText("Order Date");
    cOrderDate.set_Width(100);
    ts2.get_GridColumnStyles().Add(cOrderDate);

    PropertyDescriptorCollection pcol = 
        this.get_BindingContext().
        get_Item(myDataSet, "Customers.custToOrders").
        GetItemProperties();
    DataGridColumnStyle csOrderAmount = 
        new DataGridTextBoxColumn(pcol.get_Item("OrderAmount"), "c", true);
    csOrderAmount.set_MappingName("OrderAmount");
    csOrderAmount.set_HeaderText("Total");
    csOrderAmount.set_Width(100);
    ts2.get_GridColumnStyles().Add(csOrderAmount);

    // Add the DataGridTableStyle objects to the collection.
    myDataGrid.get_TableStyles().Add(ts1);
    myDataGrid.get_TableStyles().Add(ts2);
} //AddCustomDataTableStyle

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
      System.Windows.Forms.DataGridTableStyle

この型の public static (Visual Basicでは共有) メンバはすべて,スレッド セーフです。インスタンス メンバの場合は,スレッド セーフであるとは限りません。

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0

.NET Compact Framework

サポート対象 : 2.0,1.0
表示: