DataGridColumnStyle クラス

定義

DataGrid コントロールの列に関する、外観、テキスト書式、および動作を指定します。Specifies the appearance, text formatting, and behavior of a DataGrid control column. このクラスは抽象クラスです。This class is abstract.

public ref class DataGridColumnStyle abstract : System::ComponentModel::Component, System::Windows::Forms::IDataGridColumnStyleEditingNotificationService
public abstract class DataGridColumnStyle : System.ComponentModel.Component, System.Windows.Forms.IDataGridColumnStyleEditingNotificationService
type DataGridColumnStyle = class
    inherit Component
    interface IDataGridColumnStyleEditingNotificationService
Public MustInherit Class DataGridColumnStyle
Inherits Component
Implements IDataGridColumnStyleEditingNotificationService
継承
DataGridColumnStyle
派生
実装

次のコード例では、コントロールをホストするを作成し DataGridColumnStyle DateTimePicker ます。The following code example creates a DataGridColumnStyle that hosts a DateTimePicker control.

#using <System.dll>
#using <System.Data.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::Data;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace System::Security::Permissions;

// This example shows how to create your own column style that
// hosts a control, in this case, a DateTimePicker.

public ref class CustomDateTimePicker : public DateTimePicker
{
protected:
    [SecurityPermission(SecurityAction::Demand, Flags=SecurityPermissionFlag::UnmanagedCode)]
    virtual bool ProcessKeyMessage( Message% m ) override
    {
        // Keep all the keys for the DateTimePicker.
        return ProcessKeyEventArgs( m );
    }
};

public ref class DataGridTimePickerColumn : public DataGridColumnStyle
{
private:
   CustomDateTimePicker^ customDateTimePicker1;

   // The isEditing field tracks whether or not the user is
   // editing data with the hosted control.
   bool isEditing;

public:
   DataGridTimePickerColumn()
   {
      customDateTimePicker1 = gcnew CustomDateTimePicker;
      customDateTimePicker1->Visible = false;
   }

protected:
   virtual void Abort( int /*rowNum*/ ) override
   {
      isEditing = false;
      customDateTimePicker1->ValueChanged -=
         gcnew EventHandler( this, &DataGridTimePickerColumn::TimePickerValueChanged );
      Invalidate();
   }

   virtual bool Commit( CurrencyManager^ dataSource, int rowNum ) override
   {
      customDateTimePicker1->Bounds = Rectangle::Empty;

      customDateTimePicker1->ValueChanged -=
         gcnew EventHandler( this, &DataGridTimePickerColumn::TimePickerValueChanged );
      
      if (  !isEditing )
         return true;

      isEditing = false;

      try
      {
         DateTime value = customDateTimePicker1->Value;
         SetColumnValueAtRow( dataSource, rowNum, value );
      }
      catch ( Exception^ ) 
      {
         Abort( rowNum );
         return false;
      }

      Invalidate();
      return true;
   }

   virtual void Edit(
      CurrencyManager^ source,
      int rowNum,
      Rectangle bounds,
      bool /*readOnly*/,
      String^ /*displayText*/,
      bool cellIsVisible ) override
   {
      DateTime value =  (DateTime)
         GetColumnValueAtRow( source, rowNum );
      if ( cellIsVisible )
      {
         customDateTimePicker1->Bounds = Rectangle(
            bounds.X + 2, bounds.Y + 2,
            bounds.Width - 4, bounds.Height - 4 );
         customDateTimePicker1->Value = value;
         customDateTimePicker1->Visible = true;
         customDateTimePicker1->ValueChanged +=
            gcnew EventHandler( this, &DataGridTimePickerColumn::TimePickerValueChanged );
      }
      else
      {
         customDateTimePicker1->Value = value;
         customDateTimePicker1->Visible = false;
      }

      if ( customDateTimePicker1->Visible )
         DataGridTableStyle->DataGrid->Invalidate( bounds );

      customDateTimePicker1->Focus();
   }

   virtual System::Drawing::Size GetPreferredSize(
      Graphics^ /*g*/,
      Object^ /*value*/ ) override
   {
      return Size( 100, customDateTimePicker1->PreferredHeight + 4);
   }

   virtual int GetMinimumHeight() override
   {
      return customDateTimePicker1->PreferredHeight + 4;
   }

   virtual int GetPreferredHeight( Graphics^ /*g*/,
      Object^ /*value*/ ) override
   {
      return customDateTimePicker1->PreferredHeight + 4;
   }

   virtual void Paint( Graphics^ g,
      Rectangle bounds,
      CurrencyManager^ source,
      int rowNum ) override
   {
      Paint( g, bounds, source, rowNum, false );
   }

   virtual void Paint(
      Graphics^ g,
      Rectangle bounds,
      CurrencyManager^ source,
      int rowNum,
      bool alignToRight ) override
   {
      Paint(
         g, bounds,
         source,
         rowNum,
         Brushes::Red,
         Brushes::Blue,
         alignToRight );
   }

   virtual void Paint(
      Graphics^ g,
      Rectangle bounds,
      CurrencyManager^ source,
      int rowNum,
      Brush^ backBrush,
      Brush^ foreBrush,
      bool /*alignToRight*/ ) override
   {
      DateTime date =  (DateTime)
         GetColumnValueAtRow( source, rowNum );
      Rectangle rect = bounds;
      g->FillRectangle( backBrush, rect );
      rect.Offset( 0, 2 );
      rect.Height -= 2;
      g->DrawString( date.ToString( "d" ),
         this->DataGridTableStyle->DataGrid->Font,
         foreBrush, rect );
   }

   virtual void SetDataGridInColumn( DataGrid^ value ) override
   {
      DataGridColumnStyle::SetDataGridInColumn( value );
      if ( customDateTimePicker1->Parent != nullptr )
      {
         customDateTimePicker1->Parent->Controls->Remove
            ( customDateTimePicker1 );
      }
      if ( value != nullptr )
      {
         value->Controls->Add( customDateTimePicker1 );
      }
   }

private:
   void TimePickerValueChanged( Object^ /*sender*/, EventArgs^ /*e*/ )
   {
      // Remove the handler to prevent it from being called twice in a row.
      customDateTimePicker1->ValueChanged -=
         gcnew EventHandler( this, &DataGridTimePickerColumn::TimePickerValueChanged );
      this->isEditing = true;
      DataGridColumnStyle::ColumnStartedEditing( customDateTimePicker1 );
   }
};

public ref class MyForm: public Form
{
private:
   DataTable^ namesDataTable;
   DataGrid^ grid;
public:
   MyForm()
   {
      grid = gcnew DataGrid;

      InitForm();

      namesDataTable = gcnew DataTable( "NamesTable" );
      namesDataTable->Columns->Add( gcnew DataColumn( "Name" ) );
      DataColumn^ dateColumn = gcnew DataColumn
         ( "Date",DateTime::typeid );
      dateColumn->DefaultValue = DateTime::Today;
      namesDataTable->Columns->Add( dateColumn );
      DataSet^ namesDataSet = gcnew DataSet;
      namesDataSet->Tables->Add( namesDataTable );
      grid->DataSource = namesDataSet;
      grid->DataMember = "NamesTable";
      AddGridStyle();
      AddData();
   }

private:
   void AddGridStyle()
   {
      DataGridTableStyle^ myGridStyle = gcnew DataGridTableStyle;
      myGridStyle->MappingName = "NamesTable";
      DataGridTextBoxColumn^ nameColumnStyle =
         gcnew DataGridTextBoxColumn;
      nameColumnStyle->MappingName = "Name";
      nameColumnStyle->HeaderText = "Name";
      myGridStyle->GridColumnStyles->Add( nameColumnStyle );

      DataGridTimePickerColumn^ timePickerColumnStyle =
         gcnew DataGridTimePickerColumn;
      timePickerColumnStyle->MappingName = "Date";
      timePickerColumnStyle->HeaderText = "Date";
      timePickerColumnStyle->Width = 100;
      myGridStyle->GridColumnStyles->Add( timePickerColumnStyle );

      grid->TableStyles->Add( myGridStyle );
   }

   void AddData()
   {
      DataRow^ dRow = namesDataTable->NewRow();
      dRow->default[ "Name" ] = "Name 1";
      dRow->default[ "Date" ] = DateTime(2001,12,01);
      namesDataTable->Rows->Add( dRow );

      dRow = namesDataTable->NewRow();
      dRow->default[ "Name" ] = "Name 2";
      dRow->default[ "Date" ] = DateTime(2001,12,04);
      namesDataTable->Rows->Add( dRow );

      dRow = namesDataTable->NewRow();
      dRow->default[ "Name" ] = "Name 3";
      dRow->default[ "Date" ] = DateTime(2001,12,29);
      namesDataTable->Rows->Add( dRow );

      dRow = namesDataTable->NewRow();
      dRow->default[ "Name" ] = "Name 4";
      dRow->default[ "Date" ] = DateTime(2001,12,13);
      namesDataTable->Rows->Add( dRow );

      dRow = namesDataTable->NewRow();
      dRow->default[ "Name" ] = "Name 5";
      dRow->default[ "Date" ] = DateTime(2001,12,21);
      namesDataTable->Rows->Add( dRow );

      namesDataTable->AcceptChanges();
   }

   void InitForm()
   {
      this->Size = System::Drawing::Size( 500, 500 );
      grid->Size = System::Drawing::Size( 350, 250 );
      grid->TabStop = true;
      grid->TabIndex = 1;
      this->StartPosition = FormStartPosition::CenterScreen;
      this->Controls->Add( grid );
   }
};

[STAThread]
int main()
{
   Application::Run( gcnew MyForm );
}
using System;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
using System.Security.Permissions;

// This example shows how to create your own column style that
// hosts a control, in this case, a DateTimePicker.
public class DataGridTimePickerColumn : DataGridColumnStyle
{
    private CustomDateTimePicker customDateTimePicker1 = 
        new CustomDateTimePicker();

    // The isEditing field tracks whether or not the user is
    // editing data with the hosted control.
    private bool isEditing;

    public DataGridTimePickerColumn() : base()
    {
        customDateTimePicker1.Visible = false;
    }

    protected override void Abort(int rowNum)
    {
        isEditing = false;
        customDateTimePicker1.ValueChanged -=
            new EventHandler(TimePickerValueChanged);
        Invalidate();
    }

    protected override bool Commit
        (CurrencyManager dataSource, int rowNum)
    {
        customDateTimePicker1.Bounds = Rectangle.Empty;

        customDateTimePicker1.ValueChanged -=
            new EventHandler(TimePickerValueChanged);

        if (!isEditing)
            return true;

        isEditing = false;

        try
        {
            DateTime value = customDateTimePicker1.Value;
            SetColumnValueAtRow(dataSource, rowNum, value);
        }
        catch (Exception)
        {
            Abort(rowNum);
            return false;
        }

        Invalidate();
        return true;
    }

    protected override void Edit(
        CurrencyManager source,
        int rowNum,
        Rectangle bounds,
        bool readOnly,
        string displayText,
        bool cellIsVisible)
    {
        DateTime value = (DateTime)
            GetColumnValueAtRow(source, rowNum);
        if (cellIsVisible)
        {
            customDateTimePicker1.Bounds = new Rectangle
                (bounds.X + 2, bounds.Y + 2,
                bounds.Width - 4, bounds.Height - 4);
            customDateTimePicker1.Value = value;
            customDateTimePicker1.Visible = true;
            customDateTimePicker1.ValueChanged +=
                new EventHandler(TimePickerValueChanged);
        }
        else
        {
            customDateTimePicker1.Value = value;
            customDateTimePicker1.Visible = false;
        }

        if (customDateTimePicker1.Visible)
            DataGridTableStyle.DataGrid.Invalidate(bounds);

        customDateTimePicker1.Focus();
    }

    protected override Size GetPreferredSize(
        Graphics g,
        object value)
    {
        return new Size(100, customDateTimePicker1.PreferredHeight + 4);
    }

    protected override int GetMinimumHeight()
    {
        return customDateTimePicker1.PreferredHeight + 4;
    }

    protected override int GetPreferredHeight(Graphics g,
        object value)
    {
        return customDateTimePicker1.PreferredHeight + 4;
    }

    protected override void Paint(Graphics g,
        Rectangle bounds,
        CurrencyManager source,
        int rowNum)
    {
        Paint(g, bounds, source, rowNum, false);
    }

    protected override void Paint(
        Graphics g,
        Rectangle bounds,
        CurrencyManager source,
        int rowNum,
        bool alignToRight)
    {
        Paint(
            g, bounds,
            source,
            rowNum,
            Brushes.Red,
            Brushes.Blue,
            alignToRight);
    }

    protected override void Paint(
        Graphics g,
        Rectangle bounds,
        CurrencyManager source,
        int rowNum,
        Brush backBrush,
        Brush foreBrush,
        bool alignToRight)
    {
        DateTime date = (DateTime)
            GetColumnValueAtRow(source, rowNum);
        Rectangle rect = bounds;
        g.FillRectangle(backBrush, rect);
        rect.Offset(0, 2);
        rect.Height -= 2;
        g.DrawString(date.ToString("d"),
            this.DataGridTableStyle.DataGrid.Font,
            foreBrush, rect);
    }

    protected override void SetDataGridInColumn(DataGrid value)
    {
        base.SetDataGridInColumn(value);
        if (customDateTimePicker1.Parent != null)
        {
            customDateTimePicker1.Parent.Controls.Remove
                (customDateTimePicker1);
        }
        if (value != null)
        {
            value.Controls.Add(customDateTimePicker1);
        }
    }

    private void TimePickerValueChanged(object sender, EventArgs e)
    {
        // Remove the handler to prevent it from being called twice in a row.
        customDateTimePicker1.ValueChanged -=
            new EventHandler(TimePickerValueChanged);
        this.isEditing = true;
        base.ColumnStartedEditing(customDateTimePicker1);
    }
}

public class CustomDateTimePicker : DateTimePicker
{
    [SecurityPermissionAttribute(
    SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)]
    protected override bool ProcessKeyMessage(ref Message m)
    {
        // Keep all the keys for the DateTimePicker.
        return ProcessKeyEventArgs(ref m);
    }
}

public class MyForm : Form
{
    private DataTable namesDataTable;
    private DataGrid grid = new DataGrid();
    public MyForm() : base()
    {
        InitForm();

        namesDataTable = new DataTable("NamesTable");
        namesDataTable.Columns.Add(new DataColumn("Name"));
        DataColumn dateColumn = new DataColumn
            ("Date", typeof(DateTime));
        dateColumn.DefaultValue = DateTime.Today;
        namesDataTable.Columns.Add(dateColumn);
        DataSet namesDataSet = new DataSet();
        namesDataSet.Tables.Add(namesDataTable);
        grid.DataSource = namesDataSet;
        grid.DataMember = "NamesTable";
        AddGridStyle();
        AddData();
    }

    private void AddGridStyle()
    {
        DataGridTableStyle myGridStyle = new DataGridTableStyle();
        myGridStyle.MappingName = "NamesTable";

        DataGridTextBoxColumn nameColumnStyle =
            new DataGridTextBoxColumn();
        nameColumnStyle.MappingName = "Name";
        nameColumnStyle.HeaderText = "Name";
        myGridStyle.GridColumnStyles.Add(nameColumnStyle);

        DataGridTimePickerColumn timePickerColumnStyle =
            new DataGridTimePickerColumn();
        timePickerColumnStyle.MappingName = "Date";
        timePickerColumnStyle.HeaderText = "Date";
        timePickerColumnStyle.Width = 100;
        myGridStyle.GridColumnStyles.Add(timePickerColumnStyle);

        grid.TableStyles.Add(myGridStyle);
    }

    private void AddData()
    {

        DataRow dRow = namesDataTable.NewRow();
        dRow["Name"] = "Name 1";
        dRow["Date"] = new DateTime(2001, 12, 01);
        namesDataTable.Rows.Add(dRow);

        dRow = namesDataTable.NewRow();
        dRow["Name"] = "Name 2";
        dRow["Date"] = new DateTime(2001, 12, 04);
        namesDataTable.Rows.Add(dRow);

        dRow = namesDataTable.NewRow();
        dRow["Name"] = "Name 3";
        dRow["Date"] = new DateTime(2001, 12, 29);
        namesDataTable.Rows.Add(dRow);

        dRow = namesDataTable.NewRow();
        dRow["Name"] = "Name 4";
        dRow["Date"] = new DateTime(2001, 12, 13);
        namesDataTable.Rows.Add(dRow);

        dRow = namesDataTable.NewRow();
        dRow["Name"] = "Name 5";
        dRow["Date"] = new DateTime(2001, 12, 21);
        namesDataTable.Rows.Add(dRow);

        namesDataTable.AcceptChanges();
    }

    private void InitForm()
    {
        this.Size = new Size(500, 500);
        grid.Size = new Size(350, 250);
        grid.TabStop = true;
        grid.TabIndex = 1;
        this.StartPosition = FormStartPosition.CenterScreen;
        this.Controls.Add(grid);
    }
 
    [STAThread]
    public static void Main()
    {
        Application.Run(new MyForm());
    }
}
Imports System.Data
Imports System.Windows.Forms
Imports System.Drawing
Imports System.ComponentModel
Imports System.Security.Permissions

' This example shows how to create your own column style that
' hosts a control, in this case, a DateTimePicker.
Public Class DataGridTimePickerColumn
    Inherits DataGridColumnStyle

    Private customDateTimePicker1 As New CustomDateTimePicker()

    ' The isEditing field tracks whether or not the user is
    ' editing data with the hosted control.
    Private isEditing As Boolean

    Public Sub New()
        customDateTimePicker1.Visible = False
    End Sub

    Protected Overrides Sub Abort(ByVal rowNum As Integer)
        isEditing = False
        RemoveHandler customDateTimePicker1.ValueChanged, _
            AddressOf TimePickerValueChanged
        Invalidate()
    End Sub

    Protected Overrides Function Commit _
        (ByVal dataSource As CurrencyManager, ByVal rowNum As Integer) _
        As Boolean

        customDateTimePicker1.Bounds = Rectangle.Empty

        RemoveHandler customDateTimePicker1.ValueChanged, _
            AddressOf TimePickerValueChanged

        If Not isEditing Then
            Return True
        End If
        isEditing = False

        Try
            Dim value As DateTime = customDateTimePicker1.Value
            SetColumnValueAtRow(dataSource, rowNum, value)
        Catch
        End Try

        Invalidate()
        Return True
    End Function

    Protected Overloads Overrides Sub Edit( _
        ByVal [source] As CurrencyManager, _
        ByVal rowNum As Integer, _
        ByVal bounds As Rectangle, _
        ByVal [readOnly] As Boolean, _
        ByVal displayText As String, _
        ByVal cellIsVisible As Boolean)

        Dim value As DateTime = _
        CType(GetColumnValueAtRow([source], rowNum), DateTime)
        If cellIsVisible Then
            customDateTimePicker1.Bounds = New Rectangle _
            (bounds.X + 2, bounds.Y + 2, bounds.Width - 4, _
            bounds.Height - 4)

            customDateTimePicker1.Value = value
            customDateTimePicker1.Visible = True
            AddHandler customDateTimePicker1.ValueChanged, _
            AddressOf TimePickerValueChanged
        Else
            customDateTimePicker1.Value = value
            customDateTimePicker1.Visible = False
        End If

        If customDateTimePicker1.Visible Then
            DataGridTableStyle.DataGrid.Invalidate(bounds)
        End If

        customDateTimePicker1.Focus()

    End Sub

    Protected Overrides Function GetPreferredSize( _
        ByVal g As Graphics, _
        ByVal value As Object) As Size

        Return New Size(100, customDateTimePicker1.PreferredHeight + 4)

    End Function

    Protected Overrides Function GetMinimumHeight() As Integer
        Return customDateTimePicker1.PreferredHeight + 4
    End Function

    Protected Overrides Function GetPreferredHeight( _
        ByVal g As Graphics, ByVal value As Object) As Integer

        Return customDateTimePicker1.PreferredHeight + 4

    End Function

    Protected Overloads Overrides Sub Paint( _
        ByVal g As Graphics, ByVal bounds As Rectangle, _
        ByVal [source] As CurrencyManager, ByVal rowNum As Integer)

        Paint(g, bounds, [source], rowNum, False)

    End Sub

    Protected Overloads Overrides Sub Paint(ByVal g As Graphics, _
        ByVal bounds As Rectangle, ByVal [source] As CurrencyManager, _
        ByVal rowNum As Integer, ByVal alignToRight As Boolean)

        Paint(g, bounds, [source], rowNum, Brushes.Red, _
            Brushes.Blue, alignToRight)

    End Sub

    Protected Overloads Overrides Sub Paint(ByVal g As Graphics, _
        ByVal bounds As Rectangle, ByVal [source] As CurrencyManager, _
        ByVal rowNum As Integer, ByVal backBrush As Brush, _
        ByVal foreBrush As Brush, ByVal alignToRight As Boolean)

        Dim [date] As DateTime = _
        CType(GetColumnValueAtRow([source], rowNum), DateTime)
        Dim rect As Rectangle = bounds
        g.FillRectangle(backBrush, rect)
        rect.Offset(0, 2)
        rect.Height -= 2
        g.DrawString([date].ToString("d"), _
            Me.DataGridTableStyle.DataGrid.Font, foreBrush, _
            RectangleF.FromLTRB(rect.X, rect.Y, rect.Right, rect.Bottom))

    End Sub

    Protected Overrides Sub SetDataGridInColumn(ByVal value As DataGrid)
        MyBase.SetDataGridInColumn(value)
        If (customDateTimePicker1.Parent IsNot Nothing) Then
            customDateTimePicker1.Parent.Controls.Remove(customDateTimePicker1)
        End If
        If (value IsNot Nothing) Then
            value.Controls.Add(customDateTimePicker1)
        End If
    End Sub

    Private Sub TimePickerValueChanged( _
        ByVal sender As Object, ByVal e As EventArgs)

        ' Remove the handler to prevent it from being called twice in a row.
        RemoveHandler customDateTimePicker1.ValueChanged, _
            AddressOf TimePickerValueChanged
        Me.isEditing = True
        MyBase.ColumnStartedEditing(customDateTimePicker1)

    End Sub

End Class

Public Class CustomDateTimePicker
    Inherits DateTimePicker

    <SecurityPermissionAttribute( _
    SecurityAction.LinkDemand, Flags := SecurityPermissionFlag.UnmanagedCode)> _
    Protected Overrides Function ProcessKeyMessage(ByRef m As Message) As Boolean
        ' Keep all the keys for the DateTimePicker.
        Return ProcessKeyEventArgs(m)
    End Function

End Class

Public Class MyForm
    Inherits Form

    Private namesDataTable As DataTable
    Private myGrid As DataGrid = New DataGrid()

    Public Sub New()

        InitForm()

        namesDataTable = New DataTable("NamesTable")
        namesDataTable.Columns.Add(New DataColumn("Name"))
        Dim dateColumn As DataColumn = _
             New DataColumn("Date", GetType(DateTime))
        dateColumn.DefaultValue = DateTime.Today
        namesDataTable.Columns.Add(dateColumn)
        Dim namesDataSet As DataSet = New DataSet()
        namesDataSet.Tables.Add(namesDataTable)
        myGrid.DataSource = namesDataSet
        myGrid.DataMember = "NamesTable"
        AddGridStyle()
        AddData()

    End Sub

    Private Sub AddGridStyle()
        Dim myGridStyle As DataGridTableStyle = _
                    New DataGridTableStyle()
        myGridStyle.MappingName = "NamesTable"

        Dim nameColumnStyle As DataGridTextBoxColumn = _
            New DataGridTextBoxColumn()
        nameColumnStyle.MappingName = "Name"
        nameColumnStyle.HeaderText = "Name"
        myGridStyle.GridColumnStyles.Add(nameColumnStyle)

        Dim customDateTimePicker1ColumnStyle As DataGridTimePickerColumn = _
            New DataGridTimePickerColumn()
        customDateTimePicker1ColumnStyle.MappingName = "Date"
        customDateTimePicker1ColumnStyle.HeaderText = "Date"
        customDateTimePicker1ColumnStyle.Width = 100
        myGridStyle.GridColumnStyles.Add(customDateTimePicker1ColumnStyle)

        myGrid.TableStyles.Add(myGridStyle)
    End Sub

    Private Sub AddData()
        Dim dRow As DataRow = namesDataTable.NewRow()
        dRow("Name") = "Name 1"
        dRow("Date") = New DateTime(2001, 12, 1)
        namesDataTable.Rows.Add(dRow)

        dRow = namesDataTable.NewRow()
        dRow("Name") = "Name 2"
        dRow("Date") = New DateTime(2001, 12, 4)
        namesDataTable.Rows.Add(dRow)

        dRow = namesDataTable.NewRow()
        dRow("Name") = "Name 3"
        dRow("Date") = New DateTime(2001, 12, 29)
        namesDataTable.Rows.Add(dRow)

        dRow = namesDataTable.NewRow()
        dRow("Name") = "Name 4"
        dRow("Date") = New DateTime(2001, 12, 13)
        namesDataTable.Rows.Add(dRow)

        dRow = namesDataTable.NewRow()
        dRow("Name") = "Name 5"
        dRow("Date") = New DateTime(2001, 12, 21)
        namesDataTable.Rows.Add(dRow)

        namesDataTable.AcceptChanges()
    End Sub

    Private Sub InitForm()
        Me.Size = New Size(500, 500)
        myGrid.Size = New Size(350, 250)
        myGrid.TabStop = True
        myGrid.TabIndex = 1
        Me.StartPosition = FormStartPosition.CenterScreen
        Me.Controls.Add(myGrid)
    End Sub

    <STAThread()> _
    Public Shared Sub Main()
        Application.Run(New MyForm())
    End Sub

End Class

注釈

DataGridColumnStyleオブジェクト () のコレクションに GridColumnStylesCollection は、コントロールのプロパティを使用してアクセスし System.Windows.Forms.DataGrid TableStyles ます。The collection of DataGridColumnStyle objects (the GridColumnStylesCollection) is accessed through the System.Windows.Forms.DataGrid control's TableStyles property.

System.Windows.Forms.DataGrid DataGridColumnStyle DataSource プロパティを適切なデータソースに設定すると、コントロールによってオブジェクトのコレクションが自動的に作成されます。The System.Windows.Forms.DataGrid control automatically creates a collection of DataGridColumnStyle objects for you when you set the DataSource property to an appropriate data source. 実際に作成されるオブジェクトは、 DataGridColumnStyle DataGridBoolColumn またはクラスから継承される次のいずれかのクラスのインスタンスです DataGridTextBoxColumnThe objects created actually are instances of one of the following classes that inherit from DataGridColumnStyle: DataGridBoolColumn or DataGridTextBoxColumn class.

データ表示の書式を設定するには、 Format クラスのプロパティを DataGridTextBoxColumn いずれかの書式設定値に設定します。To format the data display, set the Format property of the DataGridTextBoxColumn class to one of the formatting values. 有効な書式設定値の詳細については、「 型の書式設定 」および「 カスタム日時書式指定文字列」を参照してください。For more information about valid formatting values, see Formatting Types and Custom Date and Time Format Strings.

独自のオブジェクトセットを作成して DataGridColumnStyle に追加することもでき GridColumnStylesCollection ます。You can also create your own set of DataGridColumnStyle objects and add them to the GridColumnStylesCollection. この場合、列 MappingName ColumnName の表示を実際のデータと同期させるには、各列スタイルのをのに設定する必要があり DataColumn ます。When you do so, you must set the MappingName of each column style to the ColumnName of a DataColumn to synchronize the display of columns with the actual data.

注意事項

オブジェクトをに追加する前に、常にオブジェクトを作成 DataGridColumnStyle し、に追加し GridColumnStylesCollection DataGridTableStyle GridTableStylesCollection ます。Always create DataGridColumnStyle objects and add them to the GridColumnStylesCollection before adding DataGridTableStyle objects to the GridTableStylesCollection. 有効な値を持つ空のをコレクションに追加すると DataGridTableStyle MappingNameDataGridColumnStyle オブジェクトが自動的に生成されます。When you add an empty DataGridTableStyle with a valid MappingName value to the collection, DataGridColumnStyle objects are automatically generated for you. その結果、重複する値を持つ新しいオブジェクトをに追加しようとすると、例外がスローされ DataGridColumnStyle MappingName GridColumnStylesCollection ます。Consequently, an exception will be thrown if you try to add new DataGridColumnStyle objects with duplicate MappingName values to the GridColumnStylesCollection.

派生クラスの1つがコントロールによってインスタンス化される場合 System.Windows.Forms.DataGrid 、作成されるクラスは、 DataType DataColumn オブジェクトに関連付けられているのに依存し DataGridColumnStyle ます。When one of the derived classes is instantiated by a System.Windows.Forms.DataGrid control, the class created depends on the DataType of the DataColumn associated with the DataGridColumnStyle object. たとえば、がに設定されたは、に DataColumn DataType System.Boolean 関連付けられ DataGridBoolColumn ます。For example, a DataColumn with its DataType set to System.Boolean will be associated with a DataGridBoolColumn. 任意のの型を確認するには、 DataGridColumnStyle メソッドを使用し GetType ます。To determine the type of any DataGridColumnStyle, use the GetType method.

独自の列クラスを作成するには、から継承でき DataGridColumnStyle ます。To create your own column classes, you can inherit from DataGridColumnStyle. この操作は、コントロールをホストする特別な列を作成するために、コントロールをホストするクラスによって例示として行うことができ DataGridTextBox TextBox ます。You might want to do this in order to create special columns that host controls, as exemplified by the DataGridTextBox class, which hosts the TextBox control. たとえば、 Image 画像を列に表示するコントロールをホストしたり、列にホストする独自のユーザーコントロールを作成したりすることができます。For example, you can host an Image control to show pictures in columns, or you can create your own user control to host in the column.

の機能は、の機能と混同しないようにして DataGridColumnStyle DataColumn ください。The functionality of the DataGridColumnStyle shouldn't be confused with that of the DataColumn. には、 DataColumn データテーブルのスキーマを作成するのに適したプロパティとメソッドが含まれていますが、には、 DataGridColumnStyle 画面上の個々の列の外観に関連するプロパティとメソッドが含まれています。Whereas the DataColumn contains the properties and methods appropriate to creating a data table's schema, the DataGridColumnStyle contains the properties and methods related to the appearance of an individual column on the screen.

行にが含まれている場合は、プロパティを使用して DBNull.Value 列に表示されるテキストを設定でき NullText ます。If a row contains a DBNull.Value, the text displayed in the column can be set with the NullText property.

DataGridColumnStyleクラスを使用すると、データの変更中に列の動作を指定することもできます。The DataGridColumnStyle class also allows you to specify the behavior of a column while its data is being changed. メソッドとメソッドは、列の BeginUpdate EndUpdate データに対して大きな更新が行われている間、列の描画を一時的に中断します。The BeginUpdate and EndUpdate methods temporarily suspend the drawing of the column while large updates are being made to the column's data. この機能がない場合、グリッドのすべてのセルのすべての変更がすぐに描画されます。これにより、ユーザーとパフォーマンスの責任が低下する可能性があります。Without this functionality, every change in every cell of the grid would be immediately drawn; this could be distracting to the user and a performance liability.

いくつかの方法では、イベントやイベントなど、ユーザーによって編集された列を監視でき Edit Commit ます。Several methods allow monitoring of the column as it is edited by the user, including the Edit and Commit events.

クラスのプロパティとメソッドのほとんどは、列の外観を制御するように調整されています。Most of the properties and methods of the class are tailored to controlling a column's appearance. ただし、やなど、いくつかの例では、 GetColumnValueAtRow SetColumnValueAtRow 指定されたセルの値を調べて変更することができます。But a few, such as the GetColumnValueAtRow and SetColumnValueAtRow allow you to examine and change the value in a specified cell.

注意 (実装者)

から継承する場合は DataGridColumnStyle Abort(Int32) 、、、 Commit(CurrencyManager, Int32) Edit(CurrencyManager, Int32, Rectangle, Boolean) 、および Paint(Graphics, Rectangle, CurrencyManager, Int32) (2 回) のメンバーをオーバーライドする必要があります。When you inherit from DataGridColumnStyle, you must override the following members: Abort(Int32), Commit(CurrencyManager, Int32), Edit(CurrencyManager, Int32, Rectangle, Boolean), and Paint(Graphics, Rectangle, CurrencyManager, Int32) (twice).

コンストラクター

DataGridColumnStyle()

派生クラスで、DataGridColumnStyle クラスの新しいインスタンスを初期化します。In a derived class, initializes a new instance of the DataGridColumnStyle class.

DataGridColumnStyle(PropertyDescriptor)

DataGridColumnStyle を指定して、PropertyDescriptor クラスの新しいインスタンスを初期化します。Initializes a new instance of the DataGridColumnStyle class with the specified PropertyDescriptor.

プロパティ

Alignment

列内のテキストの配置について値を取得または設定します。Gets or sets the alignment of text in a column.

CanRaiseEvents

コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。Gets a value indicating whether the component can raise an event.

(継承元 Component)
Container

IContainer を含む Component を取得します。Gets the IContainer that contains the Component.

(継承元 Component)
DataGridTableStyle

列の DataGridTableStyle を取得します。Gets the DataGridTableStyle for the column.

DesignMode

Component が現在デザイン モードかどうかを示す値を取得します。Gets a value that indicates whether the Component is currently in design mode.

(継承元 Component)
Events

Component に結び付けられているイベント ハンドラーのリストを取得します。Gets the list of event handlers that are attached to this Component.

(継承元 Component)
FontHeight

列のフォントの高さを取得します。Gets the height of the column's font.

HeaderAccessibleObject

列の AccessibleObject を取得します。Gets the AccessibleObject for the column.

HeaderText

列ヘッダーのテキストを取得または設定します。Gets or sets the text of the column header.

MappingName

列スタイルの割り当て先のデータ メンバーの名前を取得または設定します。Gets or sets the name of the data member to map the column style to.

NullText

列が null を格納している場合に表示されるテキストを取得または設定します。Gets or sets the text that is displayed when the column contains null.

PropertyDescriptor

PropertyDescriptor によって表示されたデータの属性を判断する DataGridColumnStyle を取得または設定します。Gets or sets the PropertyDescriptor that determines the attributes of data displayed by the DataGridColumnStyle.

ReadOnly

列のデータを編集できるかどうかを示す値を取得または設定します。Gets or sets a value indicating whether the data in the column can be edited.

Site

ComponentISite を取得または設定します。Gets or sets the ISite of the Component.

(継承元 Component)
Width

列の幅を取得または設定します。Gets or sets the width of the column.

メソッド

Abort(Int32)

派生クラスでオーバーライドされると、編集プロシージャを中断する要求を実行します。When overridden in a derived class, initiates a request to interrupt an edit procedure.

BeginUpdate()

EndUpdate() メソッドが呼び出されるまで、列の描画を中断します。Suspends the painting of the column until the EndUpdate() method is called.

CheckValidDataSource(CurrencyManager)

DataGrid が有効なデータ ソースを保持していない場合、またはこの列がデータ ソースの有効なプロパティにマップされていない場合は、例外がスローされます。Throws an exception if the DataGrid does not have a valid data source, or if this column is not mapped to a valid property in the data source.

ColumnStartedEditing(Control)

ユーザーが列の編集を開始したことを DataGrid に通知します。Informs the DataGrid that the user has begun editing the column.

Commit(CurrencyManager, Int32)

派生クラスでオーバーライドされると、編集プロシージャを完了する要求を実行します。When overridden in a derived class, initiates a request to complete an editing procedure.

ConcedeFocus()

列がホストしているコントロールへのフォーカスを放棄する必要があることを列に通知します。Notifies a column that it must relinquish the focus to the control it is hosting.

CreateHeaderAccessibleObject()

列の AccessibleObject を取得します。Gets the AccessibleObject for the column.

CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(継承元 MarshalByRefObject)
Dispose()

Component によって使用されているすべてのリソースを解放します。Releases all resources used by the Component.

(継承元 Component)
Dispose(Boolean)

Component によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。Releases the unmanaged resources used by the Component and optionally releases the managed resources.

(継承元 Component)
Edit(CurrencyManager, Int32, Rectangle, Boolean)

編集するためにセルを準備します。Prepares a cell for editing.

Edit(CurrencyManager, Int32, Rectangle, Boolean, String)

指定した CurrencyManager、行番号、および Rectangle パラメーターを使用して、編集するためにセルを準備します。Prepares the cell for editing using the specified CurrencyManager, row number, and Rectangle parameters.

Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean)

派生クラスでオーバーライドされると、編集のためにセルが準備されます。When overridden in a deriving class, prepares a cell for editing.

EndUpdate()

BeginUpdate() メソッドを呼び出して中断されていた列の描画を再開します。Resumes the painting of columns suspended by calling the BeginUpdate() method.

EnterNullValue()

Value を列に入力します。Enters a Value into the column.

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetColumnValueAtRow(CurrencyManager, Int32)

指定した CurrencyManager から、指定した行の値を取得します。Gets the value in the specified row from the specified CurrencyManager.

GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetLifetimeService()
互換性のために残されています。

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(継承元 MarshalByRefObject)
GetMinimumHeight()

派生クラスでオーバーライドされると、行の最小の高さを取得します。When overridden in a derived class, gets the minimum height of a row.

GetPreferredHeight(Graphics, Object)

派生クラスでオーバーライドされると、列のサイズを自動的に変更するために使用する高さを取得します。When overridden in a derived class, gets the height used for automatically resizing columns.

GetPreferredSize(Graphics, Object)

派生クラスでオーバーライドされると、指定した値の幅および高さを取得します。When overridden in a derived class, gets the width and height of the specified value. この幅と高さは、ユーザーが DataGridTableStyle を使用して DataGridColumnStyle に移動するときに使用されます。The width and height are used when the user navigates to DataGridTableStyle using the DataGridColumnStyle.

GetService(Type)

Component またはその Container で提供されるサービスを表すオブジェクトを返します。Returns an object that represents a service provided by the Component or by its Container.

(継承元 Component)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
InitializeLifetimeService()
互換性のために残されています。

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。Obtains a lifetime service object to control the lifetime policy for this instance.

(継承元 MarshalByRefObject)
Invalidate()

列を再描画し、描画メッセージがコントロールに送信されます。Redraws the column and causes a paint message to be sent to the control.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。Creates a shallow copy of the current MarshalByRefObject object.

(継承元 MarshalByRefObject)
Paint(Graphics, Rectangle, CurrencyManager, Int32)

指定した DataGridColumnStyleGraphicsRectangle、および行番号を使用して CurrencyManager を描画します。Paints the DataGridColumnStyle with the specified Graphics, Rectangle, CurrencyManager, and row number.

Paint(Graphics, Rectangle, CurrencyManager, Int32, Boolean)

派生クラスでオーバーライドされると、指定した DataGridColumnStyleGraphicsRectangle、行番号、および配置を使用して CurrencyManager を描画します。When overridden in a derived class, paints a DataGridColumnStyle with the specified Graphics, Rectangle, CurrencyManager, row number, and alignment.

Paint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean)

指定した DataGridColumnStyleGraphicsRectangle、行番号、背景色、前景色、および配置を使用して CurrencyManager を描画します。Paints a DataGridColumnStyle with the specified Graphics, Rectangle, CurrencyManager, row number, background color, foreground color, and alignment.

ReleaseHostedControl()

列がホストするコントロールが不要な場合に、その列がリソースを解放できるようにします。Allows the column to free resources when the control it hosts is not needed.

ResetHeaderText()

HeaderText を既定値 null にリセットします。Resets the HeaderText to its default value, null.

SetColumnValueAtRow(CurrencyManager, Int32, Object)

指定した CurrencyManager からの値を使用して、指定した行の値を設定します。Sets the value in a specified row with the value from a specified CurrencyManager.

SetDataGrid(DataGrid)

この列が属する DataGrid コントロールを設定します。Sets the DataGrid control that this column belongs to.

SetDataGridInColumn(DataGrid)

列の DataGrid を設定します。Sets the DataGrid for the column.

ToString()

Component の名前 (存在する場合) を格納する String を返します。Returns a String containing the name of the Component, if any. このメソッドはオーバーライドできません。This method should not be overridden.

(継承元 Component)
UpdateUI(CurrencyManager, Int32, String)

指定されたテキストを使用して、指定した行の値を更新します。Updates the value of a specified row with the given text.

イベント

AlignmentChanged

Alignment プロパティの値が変化すると発生します。Occurs when the Alignment property value changes.

Disposed

Dispose() メソッドの呼び出しによってコンポーネントが破棄されるときに発生します。Occurs when the component is disposed by a call to the Dispose() method.

(継承元 Component)
FontChanged

列のフォントが変更されたときに発生します。Occurs when the column's font changes.

HeaderTextChanged

HeaderText プロパティの値が変化すると発生します。Occurs when the HeaderText property value changes.

MappingNameChanged

MappingName 値が変更されたときに発生します。Occurs when the MappingName value changes.

NullTextChanged

NullText 値が変更されたときに発生します。Occurs when the NullText value changes.

PropertyDescriptorChanged

PropertyDescriptor プロパティの値が変化すると発生します。Occurs when the PropertyDescriptor property value changes.

ReadOnlyChanged

ReadOnly プロパティの値が変化すると発生します。Occurs when the ReadOnly property value changes.

WidthChanged

Width プロパティの値が変化すると発生します。Occurs when the Width property value changes.

明示的なインターフェイスの実装

IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control)

ユーザーが列の編集を開始したことを DataGrid コントロールに通知します。Informs the DataGrid control that the user has begun editing the column.

適用対象

こちらもご覧ください