Partilhar via


DataGridColumnStyle Classe

Definição

Cuidado

DataGrid is provided for binary compatibility with .NET Framework and is not intended to be used directly from your code. Use DataGridView instead.

Especifica a aparência, a formatação de texto e o comportamento de uma DataGrid coluna de controle. Essa classe é abstrata.

public ref class DataGridColumnStyle abstract : System::ComponentModel::Component, System::Windows::Forms::IDataGridColumnStyleEditingNotificationService
public abstract class DataGridColumnStyle : System.ComponentModel.Component, System.Windows.Forms.IDataGridColumnStyleEditingNotificationService
[System.ComponentModel.Browsable(false)]
[System.Obsolete("`DataGrid` is provided for binary compatibility with .NET Framework and is not intended to be used directly from your code. Use `DataGridView` instead.", false, DiagnosticId="WFDEV006", UrlFormat="https://aka.ms/winforms-warnings/{0}")]
public abstract class DataGridColumnStyle : System.ComponentModel.Component, System.Windows.Forms.IDataGridColumnStyleEditingNotificationService
type DataGridColumnStyle = class
    inherit Component
    interface IDataGridColumnStyleEditingNotificationService
[<System.ComponentModel.Browsable(false)>]
[<System.Obsolete("`DataGrid` is provided for binary compatibility with .NET Framework and is not intended to be used directly from your code. Use `DataGridView` instead.", false, DiagnosticId="WFDEV006", UrlFormat="https://aka.ms/winforms-warnings/{0}")>]
type DataGridColumnStyle = class
    inherit Component
    interface IDataGridColumnStyleEditingNotificationService
Public MustInherit Class DataGridColumnStyle
Inherits Component
Implements IDataGridColumnStyleEditingNotificationService
Herança
DataGridColumnStyle
Derivado
Atributos
Implementações

Exemplos

O exemplo de código a seguir cria um DataGridColumnStyle controle que hospeda um DateTimePicker controle.

#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;

// 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
{
    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

Comentários

A coleção de DataGridColumnStyle objetos (o GridColumnStylesCollection) é acessada por meio da System.Windows.Forms.DataGrid propriedade do TableStyles controle.

O System.Windows.Forms.DataGrid controle cria automaticamente uma coleção de DataGridColumnStyle objetos para você quando você define a DataSource propriedade como uma fonte de dados apropriada. Os objetos criados são, na verdade, instâncias de uma das seguintes classes que herdam de DataGridColumnStyle: DataGridBoolColumn ou DataGridTextBoxColumn classe.

Para formatar a exibição de dados, defina a Format propriedade da DataGridTextBoxColumn classe como um dos valores de formatação. Para obter mais informações sobre valores de formatação válidos, consulte Tipos de Formatação e cadeias de caracteres de formato de data e hora personalizados.

Você também pode criar seu próprio conjunto de DataGridColumnStyle objetos e adicioná-los ao GridColumnStylesCollection. Ao fazer isso, você deve definir o MappingName estilo de cada coluna como o ColumnName de um DataColumn para sincronizar a exibição de colunas com os dados reais.

Cuidado

Sempre crie DataGridColumnStyle objetos e adicione-os GridColumnStylesCollection ao antes de adicionar DataGridTableStyle objetos ao GridTableStylesCollection. Quando você adiciona um vazio DataGridTableStyle com um valor válido MappingName à coleção, DataGridColumnStyle os objetos são gerados automaticamente para você. Consequentemente, uma exceção será gerada se você tentar adicionar novos DataGridColumnStyle objetos com valores duplicados MappingName ao GridColumnStylesCollection.

Quando uma das classes derivadas é instanciada por um System.Windows.Forms.DataGrid controle, a classe criada depende da DataTypeDataColumn associada ao DataGridColumnStyle objeto. Por exemplo, um DataColumn com seu DataType conjunto a ser associado a System.Boolean um DataGridBoolColumn. Para determinar o tipo de qualquer DataGridColumnStyleum, use o GetType método.

Para criar suas próprias classes de coluna, você pode herdar de DataGridColumnStyle. Talvez você queira fazer isso para criar colunas especiais que hospedam controles, conforme exemplificado pela DataGridTextBox classe, que hospeda o TextBox controle. Por exemplo, você pode hospedar um Image controle para mostrar imagens em colunas ou criar seu próprio controle de usuário para hospedar na coluna.

A funcionalidade do DataGridColumnStyle não deve ser confundida com a DataColumndo . Enquanto o DataColumn contém as propriedades e os métodos apropriados para criar o esquema de uma tabela de dados, ele DataGridColumnStyle contém as propriedades e os métodos relacionados à aparência de uma coluna individual na tela.

Se uma linha contiver um DBNull.Value, o texto exibido na coluna poderá ser definido com a NullText propriedade.

A DataGridColumnStyle classe também permite que você especifique o comportamento de uma coluna enquanto seus dados estão sendo alterados. Os BeginUpdate métodos e EndUpdate os métodos suspendem temporariamente o desenho da coluna enquanto grandes atualizações estão sendo feitas nos dados da coluna. Sem essa funcionalidade, cada alteração em cada célula da grade seria imediatamente desenhada; isso pode estar distraindo o usuário e uma responsabilidade de desempenho.

Vários métodos permitem o monitoramento da coluna conforme ela é editada pelo usuário, incluindo o e Commit os Edit eventos.

A maioria das propriedades e métodos da classe são adaptados para controlar a aparência de uma coluna. Mas alguns, como o GetColumnValueAtRow e SetColumnValueAtRow permitem que você examine e altere o valor em uma célula especificada.

Notas aos Implementadores

Ao herdar, DataGridColumnStylevocê deve substituir os seguintes membros: Abort(Int32), , Commit(CurrencyManager, Int32)e Edit(CurrencyManager, Int32, Rectangle, Boolean)Paint(Graphics, Rectangle, CurrencyManager, Int32) (duas vezes).

Construtores

Nome Description
DataGridColumnStyle()
Obsoleto.

Em uma classe derivada, inicializa uma nova instância da DataGridColumnStyle classe.

DataGridColumnStyle(PropertyDescriptor)
Obsoleto.

Inicializa uma nova instância da DataGridColumnStyle classe com a especificada PropertyDescriptor.

Propriedades

Nome Description
Alignment
Obsoleto.

Obtém ou define o alinhamento do texto em uma coluna.

CanRaiseEvents
Obsoleto.

Obtém um valor que indica se o componente pode gerar um evento.

(Herdado de Component)
Container
Obsoleto.

Obtém o IContainer que contém o Component.

(Herdado de Component)
DataGridTableStyle
Obsoleto.

Obtém o DataGridTableStyle para a coluna.

DesignMode
Obsoleto.

Obtém um valor que indica se o Component está no modo de design no momento.

(Herdado de Component)
Events
Obsoleto.

Obtém a lista de manipuladores de eventos anexados a isso Component.

(Herdado de Component)
FontHeight
Obsoleto.

Obtém a altura da fonte da coluna.

HeaderAccessibleObject
Obsoleto.

Obtém o AccessibleObject para a coluna.

HeaderText
Obsoleto.

Obtém ou define o texto do cabeçalho da coluna.

MappingName
Obsoleto.

Obtém ou define o nome do membro de dados para o qual mapear o estilo da coluna.

NullText
Obsoleto.

Obtém ou define o texto exibido quando a coluna contém null.

PropertyDescriptor
Obsoleto.

Obtém ou define o PropertyDescriptor que determina os atributos dos dados exibidos pelo DataGridColumnStyle.

ReadOnly
Obsoleto.

Obtém ou define um valor que indica se os dados na coluna podem ser editados.

Site
Obsoleto.

Obtém ou define o ISiteComponent.

(Herdado de Component)
Width
Obsoleto.

Obtém ou define a largura da coluna.

Métodos

Nome Description
Abort(Int32)
Obsoleto.

Quando substituído em uma classe derivada, inicia uma solicitação para interromper um procedimento de edição.

BeginUpdate()
Obsoleto.

Suspende a pintura da coluna até que o EndUpdate() método seja chamado.

CheckValidDataSource(CurrencyManager)
Obsoleto.

Gerará uma exceção se a DataGrid fonte de dados não tiver uma fonte de dados válida ou se essa coluna não for mapeada para uma propriedade válida na fonte de dados.

ColumnStartedEditing(Control)
Obsoleto.

Informa que DataGrid o usuário começou a editar a coluna.

Commit(CurrencyManager, Int32)
Obsoleto.

Quando substituído em uma classe derivada, inicia uma solicitação para concluir um procedimento de edição.

ConcedeFocus()
Obsoleto.

Notifica uma coluna de que ela deve abrir mão do foco para o controle que está hospedando.

CreateHeaderAccessibleObject()
Obsoleto.

Obtém o AccessibleObject para a coluna.

CreateObjRef(Type)
Obsoleto.

Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
Dispose()
Obsoleto.

Libera todos os recursos usados pelo Component.

(Herdado de Component)
Dispose(Boolean)
Obsoleto.

Libera os recursos não gerenciados usados pelo Component e, opcionalmente, libera os recursos gerenciados.

(Herdado de Component)
Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean)
Obsoleto.

Quando substituído em uma classe derivada, prepara uma célula para edição.

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

Prepara a célula para edição usando o número de linha e Rectangle os parâmetros especificadosCurrencyManager.

Edit(CurrencyManager, Int32, Rectangle, Boolean)
Obsoleto.

Prepara uma célula para edição.

EndUpdate()
Obsoleto.

Retoma a pintura de colunas suspensas chamando o BeginUpdate() método.

EnterNullValue()
Obsoleto.

Insere um Value na coluna.

Equals(Object)
Obsoleto.

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetColumnValueAtRow(CurrencyManager, Int32)
Obsoleto.

Obtém o valor na linha especificada do especificado CurrencyManager.

GetHashCode()
Obsoleto.

Serve como a função de hash padrão.

(Herdado de Object)
GetLifetimeService()
Obsoleto.

Recupera o objeto de serviço de tempo de vida atual que controla a política de tempo de vida para essa instância.

(Herdado de MarshalByRefObject)
GetMinimumHeight()
Obsoleto.

Quando substituído em uma classe derivada, obtém a altura mínima de uma linha.

GetPreferredHeight(Graphics, Object)
Obsoleto.

Quando substituído em uma classe derivada, obtém a altura usada para redimensionar colunas automaticamente.

GetPreferredSize(Graphics, Object)
Obsoleto.

Quando substituído em uma classe derivada, obtém a largura e a altura do valor especificado. A largura e a altura são usadas quando o usuário navega para DataGridTableStyle usar o DataGridColumnStyle.

GetService(Type)
Obsoleto.

Retorna um objeto que representa um serviço fornecido pelo Component ou por sua Container.

(Herdado de Component)
GetType()
Obsoleto.

Obtém o Type da instância atual.

(Herdado de Object)
InitializeLifetimeService()
Obsoleto.

Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida dessa instância.

(Herdado de MarshalByRefObject)
Invalidate()
Obsoleto.

Redesenhe a coluna e faz com que uma mensagem de pintura seja enviada ao controle.

MemberwiseClone()
Obsoleto.

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
MemberwiseClone(Boolean)
Obsoleto.

Cria uma cópia superficial do objeto atual MarshalByRefObject .

(Herdado de MarshalByRefObject)
Paint(Graphics, Rectangle, CurrencyManager, Int32, Boolean)
Obsoleto.

Quando substituído em uma classe derivada, pinta um DataGridColumnStyle com o número de linha e o alinhamento especificadosRectangleGraphicsCurrencyManager.

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

Pinta um DataGridColumnStyle com o número de linha, RectangleCurrencyManagero número da linha, a cor da tela de fundo, a cor do primeiro plano e o alinhamento especificadosGraphics.

Paint(Graphics, Rectangle, CurrencyManager, Int32)
Obsoleto.

Pinta com DataGridColumnStyle o número de linha e o número de linha especificadosRectangleGraphicsCurrencyManager.

ReleaseHostedControl()
Obsoleto.

Permite que a coluna libere recursos quando o controle que ele hospeda não é necessário.

ResetHeaderText()
Obsoleto.

Redefine o HeaderText valor nullpadrão.

SetColumnValueAtRow(CurrencyManager, Int32, Object)
Obsoleto.

Define o valor em uma linha especificada com o valor de um especificado CurrencyManager.

SetDataGrid(DataGrid)
Obsoleto.

Define o DataGrid controle ao qual essa coluna pertence.

SetDataGridInColumn(DataGrid)
Obsoleto.

Define o DataGrid para a coluna.

ToString()
Obsoleto.

Retorna um String que contém o nome do Component, se houver. Esse método não deve ser substituído.

(Herdado de Component)
UpdateUI(CurrencyManager, Int32, String)
Obsoleto.

Atualiza o valor de uma linha especificada com o texto fornecido.

Eventos

Nome Description
AlignmentChanged
Obsoleto.

Ocorre quando o valor da Alignment propriedade é alterado.

Disposed
Obsoleto.

Ocorre quando o componente é descartado por uma chamada para o Dispose() método.

(Herdado de Component)
FontChanged
Obsoleto.

Ocorre quando a fonte da coluna é alterada.

HeaderTextChanged
Obsoleto.

Ocorre quando o valor da HeaderText propriedade é alterado.

MappingNameChanged
Obsoleto.

Ocorre quando o MappingName valor é alterado.

NullTextChanged
Obsoleto.

Ocorre quando o NullText valor é alterado.

PropertyDescriptorChanged
Obsoleto.

Ocorre quando o valor da PropertyDescriptor propriedade é alterado.

ReadOnlyChanged
Obsoleto.

Ocorre quando o valor da ReadOnly propriedade é alterado.

WidthChanged
Obsoleto.

Ocorre quando o valor da Width propriedade é alterado.

Implantações explícitas de interface

Nome Description
IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control)
Obsoleto.

Informa o DataGrid controle de que o usuário começou a editar a coluna.

Aplica-se a

Confira também