다음을 통해 공유


DataGridTableStyle 클래스

런타임에 System.Windows.Forms.DataGrid 컨트롤로 그린 테이블을 나타냅니다.

네임스페이스: System.Windows.Forms
어셈블리: System.Windows.Forms(system.windows.forms.dll)

구문

‘선언
Public Class DataGridTableStyle
    Inherits Component
    Implements IDataGridEditingService
‘사용 방법
Dim instance As DataGridTableStyle
public class DataGridTableStyle : Component, IDataGridEditingService
public ref class DataGridTableStyle : public 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. DataGridTableStyle 개체로 GridTableStylesCollection을 채웁니다. MappingName 속성 값이 DataTable 개체의 TableName 속성과 같은 GridTableStylesCollectionDataGridTableStyle이 존재하는 경우 DataTableDataGridTableStyle로 표시됩니다. 일치하는 MappingName을 가진 DataGridTableStyle이 없는 경우 DataTable은 데이터 표 테이블의 기본 스타일로 표시됩니다.

  2. 다른 모눈 스타일이 필요하면 Item 속성을 사용하여 적절한 DataGridTableStyle을 선택하고(TableNameItem 속성에 전달) 반환된 개체의 MappingName을 새 값으로 설정합니다.

  3. Item 속성을 사용하여 원하는 DataGridTableStyle을 선택하고 해당 MappingNameDataTableTableName으로 설정합니다.

경고

항상 DataGridColumnStyle 개체를 만들어 GridColumnStylesCollection에 추가한 다음 DataGridTableStyle 개체를 GridTableStylesCollection에 추가합니다. 유효한 MappingName 값을 가진 빈 DataGridTableStyle을 컬렉션에 추가하면 DataGridColumnStyle 개체가 자동으로 생성됩니다. 따라서 중복된 MappingName 값을 갖는 새로운 DataGridColumnStyle 개체를 GridColumnStylesCollection에 추가하려고 하면 예외가 throw됩니다.

현재 표시되어 있는 DataGridTableStyle을 확인하려면 System.Windows.Forms.DataGridDataSourceDataMember 속성을 사용하여 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));
 }

DataSetDataRelation 개체를 통해 관련되어 있는 DataTable 개체가 포함되어 있으며 현재 표시된 DataTable이 자식 테이블인 경우 DataMember는 TableName.RelationName 형태(가장 단순한 경우)로 문자열을 반환합니다. DataTable이 계층 구조에서 더 아래에 있는 경우 해당 문자열은 부모 테이블의 이름과 해당 테이블 수준에 도달하는 데 필요한 RelationName 값 순서로 구성됩니다. 예를 들어, 계층 관계에서 위에서 아래로 Regions, CustomersOrders라는 세 개의 DataTable 개체가 있고, RegionsToCustomersCustomersToOrders라는 두 개의 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가 목록에 바인딩할 수 있습니다. 이렇게 되면 모든 개체가 같은 형식이 되거나 목록의 첫 번째 항목과 같은 클래스에서 상속해야 합니다. 예를 들어, 목록의 첫 번째 항목이 Control인 경우 두 번째 항목은 Control에서 상속하는 TextBox가 될 수 있습니다. 이와 반대로 첫 번째 항목이 TextBox인 경우 두 번째 개체는 Control이 될 수 없습니다. 또한 ArrayList는 바인딩될 때 항목을 포함해야 하며 DataGridTableStyle의 개체에는 공용 속성이 포함되어야 합니다. 빈 ArrayList는 빈 표가 됩니다. ArrayList에 바인딩할 때 DataGridTableStyleMappingName을 "ArrayList"(형식 이름)으로 설정합니다.

예제

다음 코드 예제에서는 두 개의 DataGridTableStyle 인스턴스를 만들고 각 개체의 MappingNameDataSet에 있는 DataTableTableName으로 설정합니다. 그런 다음 각 DataGridTableStyleGridColumnStylesCollectionDataGridColumnStyle 개체를 추가합니다. 실행되는 예제에 대해서는 System.Windows.Forms.DataGrid 예제를 참조하십시오.

Private Sub AddCustomDataTableStyle()
    ' Create a new DataGridTableStyle and set
    ' its MappingName to the TableName of a DataTable. 
    Dim ts1 As 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. 
    
    Dim boolCol As New DataGridBoolColumn()
    boolCol.MappingName = "Current"
    boolCol.HeaderText = "IsCurrent Customer"
    boolCol.Width = 150
    ts1.GridColumnStyles.Add(boolCol)
    
    ' Add a second column style.
    Dim TextCol As New DataGridTextBoxColumn()
    TextCol.MappingName = "custName"
    TextCol.HeaderText = "Customer Name"
    TextCol.Width = 250
    ts1.GridColumnStyles.Add(TextCol)

    ' Create the second table style with columns.
    Dim ts2 As New DataGridTableStyle()
    ts2.MappingName = "Orders"

    ' Change the colors.
    ts2.ForeColor = Color.Yellow
    ts2.AlternatingBackColor = Color.Blue
    ts2.BackColor = Color.Blue
    
    ' Create new DataGridColumnStyle objects.
    Dim cOrderDate As New DataGridTextBoxColumn()
    cOrderDate.MappingName = "OrderDate"
    cOrderDate.HeaderText = "Order Date"
    cOrderDate.Width = 100
    ts2.GridColumnStyles.Add(cOrderDate)
    
    Dim pcol As PropertyDescriptorCollection = Me.BindingContext(myDataSet, "Customers.custToOrders").GetItemProperties()
    
    Dim csOrderAmount As 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)
End Sub 'AddCustomDataTableStyle
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);
   }
void AddCustomDataTableStyle()
{
   
   /* Create a new DataGridTableStyle and set
         its MappingName to the TableName of a DataTable. */
   DataGridTableStyle^ ts1 = gcnew 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 = gcnew DataGridBoolColumn;
   boolCol->MappingName = "Current";
   boolCol->HeaderText = "IsCurrent Customer";
   boolCol->Width = 150;
   ts1->GridColumnStyles->Add( boolCol );
   
   // Add a second column style.
   DataGridColumnStyle^ TextCol = gcnew DataGridTextBoxColumn;
   TextCol->MappingName = "custName";
   TextCol->HeaderText = "Customer Name";
   TextCol->Width = 250;
   ts1->GridColumnStyles->Add( TextCol );
   
   // Create the second table style with columns.
   DataGridTableStyle^ ts2 = gcnew 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 = gcnew 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 = gcnew 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의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 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

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

DataGridTableStyle 멤버
System.Windows.Forms 네임스페이스
DataGrid 클래스
DataGridColumnStyle 클래스
GridColumnStylesCollection
GridTableStylesCollection