Partager via


DataGridColumnStyle Classe

Définition

Attention

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

Spécifie l’apparence, la mise en forme du texte et le comportement d’une DataGrid colonne de contrôle. Cette classe est abstraite.

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
Héritage
DataGridColumnStyle
Dérivé
Attributs
Implémente

Exemples

L’exemple de code suivant crée un DataGridColumnStyle contrôle qui héberge un DateTimePicker contrôle.

#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

Remarques

La collection d’objets DataGridColumnStyle (le GridColumnStylesCollection) est accessible via la System.Windows.Forms.DataGrid propriété du TableStyles contrôle.

Le System.Windows.Forms.DataGrid contrôle crée automatiquement une collection d’objets lorsque vous définissez la DataSource propriété sur une source de DataGridColumnStyle données appropriée. Les objets créés sont des instances de l’une des classes suivantes qui héritent de DataGridColumnStyle: DataGridBoolColumn ou DataGridTextBoxColumn de classe.

Pour mettre en forme l’affichage des données, définissez la Format propriété de la DataGridTextBoxColumn classe sur l’une des valeurs de mise en forme. Pour plus d’informations sur les valeurs de mise en forme valides, consultez Types de mise en forme et Chaînes de format de date et d’heure personnalisées.

Vous pouvez également créer votre propre ensemble d’objets DataGridColumnStyle et les ajouter à l’objet GridColumnStylesCollection. Lorsque vous le faites, vous devez définir le MappingName style de chaque colonne sur l’un DataColumnColumnName pour synchroniser l’affichage des colonnes avec les données réelles.

Avertissement

Créez DataGridColumnStyle toujours des objets et ajoutez-les à l’avant GridColumnStylesCollection d’ajouter DataGridTableStyleGridTableStylesCollectiondes objets au . Lorsque vous ajoutez une valeur vide DataGridTableStyle à MappingName la collection, DataGridColumnStyle les objets sont générés automatiquement pour vous. Par conséquent, une exception est levée si vous essayez d’ajouter de nouveaux DataGridColumnStyle objets avec des valeurs en double MappingName à l’objet GridColumnStylesCollection.

Quand l’une des classes dérivées est instanciée par un System.Windows.Forms.DataGrid contrôle, la classe créée dépend de l’objet DataTypeDataColumn associé DataGridColumnStyle . Par exemple, un DataColumn jeu DataType à System.Boolean associer à un DataGridBoolColumn. Pour déterminer le type de n’importe quel DataGridColumnStyle, utilisez la GetType méthode.

Pour créer vos propres classes de colonnes, vous pouvez hériter de DataGridColumnStyle. Vous pouvez le faire pour créer des colonnes spéciales qui hébergent des contrôles, comme illustré par la DataGridTextBox classe, qui héberge le TextBox contrôle. Par exemple, vous pouvez héberger un Image contrôle pour afficher des images dans des colonnes, ou vous pouvez créer votre propre contrôle utilisateur pour héberger dans la colonne.

La fonctionnalité du ne DataGridColumnStyle doit pas être confondue avec celle du DataColumn. Alors que les DataColumn propriétés et méthodes appropriées pour créer le schéma d’une table de données, elles DataGridColumnStyle contiennent les propriétés et méthodes liées à l’apparence d’une colonne individuelle à l’écran.

Si une ligne contient un DBNull.Value, le texte affiché dans la colonne peut être défini avec la NullText propriété.

La DataGridColumnStyle classe vous permet également de spécifier le comportement d’une colonne pendant que ses données sont modifiées. Les BeginUpdate méthodes et EndUpdate les méthodes suspendent temporairement le dessin de la colonne alors que des mises à jour volumineuses sont apportées aux données de la colonne. Sans cette fonctionnalité, chaque modification de chaque cellule de la grille serait immédiatement dessinée ; cela pourrait distraire l’utilisateur et une responsabilité en matière de performances.

Plusieurs méthodes permettent de surveiller la colonne telle qu’elle est modifiée par l’utilisateur, y compris les événements et Commit les Edit événements.

La plupart des propriétés et méthodes de la classe sont adaptées au contrôle de l’apparence d’une colonne. Mais quelques-uns, tels que le GetColumnValueAtRow et SetColumnValueAtRow vous permettent d’examiner et de modifier la valeur dans une cellule spécifiée.

Notes pour les responsables de l’implémentation

Lorsque vous héritez de DataGridColumnStyle, vous devez remplacer les membres suivants : Abort(Int32), Commit(CurrencyManager, Int32), , Edit(CurrencyManager, Int32, Rectangle, Boolean)et Paint(Graphics, Rectangle, CurrencyManager, Int32) (deux fois).

Constructeurs

Nom Description
DataGridColumnStyle()
Obsolète.

Dans une classe dérivée, initialise une nouvelle instance de la DataGridColumnStyle classe.

DataGridColumnStyle(PropertyDescriptor)
Obsolète.

Initialise une nouvelle instance de la DataGridColumnStyle classe avec le fichier spécifié PropertyDescriptor.

Propriétés

Nom Description
Alignment
Obsolète.

Obtient ou définit l’alignement du texte dans une colonne.

CanRaiseEvents
Obsolète.

Obtient une valeur indiquant si le composant peut déclencher un événement.

(Hérité de Component)
Container
Obsolète.

Obtient le IContainer fichier qui contient le Component.

(Hérité de Component)
DataGridTableStyle
Obsolète.

Obtient la DataGridTableStyle colonne.

DesignMode
Obsolète.

Obtient une valeur qui indique si la Component valeur est actuellement en mode création.

(Hérité de Component)
Events
Obsolète.

Obtient la liste des gestionnaires d’événements qui sont attachés à ce Component.

(Hérité de Component)
FontHeight
Obsolète.

Obtient la hauteur de la police de la colonne.

HeaderAccessibleObject
Obsolète.

Obtient la AccessibleObject colonne.

HeaderText
Obsolète.

Obtient ou définit le texte de l’en-tête de colonne.

MappingName
Obsolète.

Obtient ou définit le nom du membre de données sur lequel mapper le style de colonne.

NullText
Obsolète.

Obtient ou définit le texte affiché lorsque la colonne contient null.

PropertyDescriptor
Obsolète.

Obtient ou définit les PropertyDescriptor attributs des données affichées par le DataGridColumnStyle.

ReadOnly
Obsolète.

Obtient ou définit une valeur indiquant si les données de la colonne peuvent être modifiées.

Site
Obsolète.

Obtient ou définit le ISiteComponent.

(Hérité de Component)
Width
Obsolète.

Obtient ou définit la largeur de la colonne.

Méthodes

Nom Description
Abort(Int32)
Obsolète.

En cas de substitution dans une classe dérivée, lance une demande d’interruption d’une procédure d’édition.

BeginUpdate()
Obsolète.

Suspend la peinture de la colonne jusqu’à ce que la EndUpdate() méthode soit appelée.

CheckValidDataSource(CurrencyManager)
Obsolète.

Lève une exception si la DataGrid source de données n’a pas de source de données valide ou si cette colonne n’est pas mappée à une propriété valide dans la source de données.

ColumnStartedEditing(Control)
Obsolète.

Informe que DataGrid l’utilisateur a commencé à modifier la colonne.

Commit(CurrencyManager, Int32)
Obsolète.

En cas de substitution dans une classe dérivée, lance une demande pour terminer une procédure d’édition.

ConcedeFocus()
Obsolète.

Avertit une colonne qu’elle doit abandonner le focus au contrôle qu’il héberge.

CreateHeaderAccessibleObject()
Obsolète.

Obtient la AccessibleObject colonne.

CreateObjRef(Type)
Obsolète.

Crée un objet qui contient toutes les informations pertinentes requises pour générer un proxy utilisé pour communiquer avec un objet distant.

(Hérité de MarshalByRefObject)
Dispose()
Obsolète.

Libère toutes les ressources utilisées par le Component.

(Hérité de Component)
Dispose(Boolean)
Obsolète.

Libère les ressources non managées utilisées par les Component ressources gérées et libère éventuellement les ressources managées.

(Hérité de Component)
Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean)
Obsolète.

En cas de substitution dans une classe dérivée, prépare une cellule pour modification.

Edit(CurrencyManager, Int32, Rectangle, Boolean, String)
Obsolète.

Prépare la cellule à modifier à l’aide du numéro de ligne et Rectangle des paramètres spécifiésCurrencyManager.

Edit(CurrencyManager, Int32, Rectangle, Boolean)
Obsolète.

Prépare une cellule pour modification.

EndUpdate()
Obsolète.

Reprend la peinture des colonnes suspendues en appelant la BeginUpdate() méthode.

EnterNullValue()
Obsolète.

Entre une Value colonne.

Equals(Object)
Obsolète.

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GetColumnValueAtRow(CurrencyManager, Int32)
Obsolète.

Obtient la valeur de la ligne spécifiée à partir de l’objet spécifié CurrencyManager.

GetHashCode()
Obsolète.

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetLifetimeService()
Obsolète.

Récupère l’objet de service de durée de vie actuel qui contrôle la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
GetMinimumHeight()
Obsolète.

En cas de substitution dans une classe dérivée, obtient la hauteur minimale d’une ligne.

GetPreferredHeight(Graphics, Object)
Obsolète.

En cas de substitution dans une classe dérivée, obtient la hauteur utilisée pour redimensionner automatiquement les colonnes.

GetPreferredSize(Graphics, Object)
Obsolète.

En cas de substitution dans une classe dérivée, obtient la largeur et la hauteur de la valeur spécifiée. La largeur et la hauteur sont utilisées lorsque l’utilisateur accède à DataGridTableStyle l’utilisation du DataGridColumnStyle.

GetService(Type)
Obsolète.

Retourne un objet qui représente un service fourni par le Component ou par son Container.

(Hérité de Component)
GetType()
Obsolète.

Obtient la Type de l’instance actuelle.

(Hérité de Object)
InitializeLifetimeService()
Obsolète.

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
Invalidate()
Obsolète.

Redessine la colonne et provoque l’envoi d’un message de peinture au contrôle.

MemberwiseClone()
Obsolète.

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
MemberwiseClone(Boolean)
Obsolète.

Crée une copie superficielle de l’objet actuel MarshalByRefObject .

(Hérité de MarshalByRefObject)
Paint(Graphics, Rectangle, CurrencyManager, Int32, Boolean)
Obsolète.

En cas de substitution dans une classe dérivée, peint un DataGridColumnStyle avec le numéro de RectangleCurrencyManagerligne, le numéro de ligne et l’alignement spécifiésGraphics.

Paint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean)
Obsolète.

Peint un DataGridColumnStyle avec le numéro de RectangleCurrencyManagerligne, le numéro de ligne, la couleur d’arrière-plan, la couleur de premier plan et l’alignement spécifiésGraphics.

Paint(Graphics, Rectangle, CurrencyManager, Int32)
Obsolète.

Peint le DataGridColumnStyle numéro de ligne , et CurrencyManagerle numéro de ligne spécifiésGraphicsRectangle.

ReleaseHostedControl()
Obsolète.

Permet à la colonne de libérer des ressources lorsque le contrôle qu’il héberge n’est pas nécessaire.

ResetHeaderText()
Obsolète.

Réinitialise la HeaderText valeur par défaut. null

SetColumnValueAtRow(CurrencyManager, Int32, Object)
Obsolète.

Définit la valeur dans une ligne spécifiée avec la valeur d’un élément spécifié CurrencyManager.

SetDataGrid(DataGrid)
Obsolète.

Définit le DataGrid contrôle auquel appartient cette colonne.

SetDataGridInColumn(DataGrid)
Obsolète.

Définit la DataGrid colonne.

ToString()
Obsolète.

Retourne un String nom contenant le nom du Component, le cas échéant. Cette méthode ne doit pas être remplacée.

(Hérité de Component)
UpdateUI(CurrencyManager, Int32, String)
Obsolète.

Met à jour la valeur d’une ligne spécifiée avec le texte donné.

Événements

Nom Description
AlignmentChanged
Obsolète.

Se produit lorsque la valeur de propriété Alignment change.

Disposed
Obsolète.

Se produit lorsque le composant est supprimé par un appel à la Dispose() méthode.

(Hérité de Component)
FontChanged
Obsolète.

Se produit lorsque la police de la colonne change.

HeaderTextChanged
Obsolète.

Se produit lorsque la valeur de propriété HeaderText change.

MappingNameChanged
Obsolète.

Se produit lorsque la MappingName valeur change.

NullTextChanged
Obsolète.

Se produit lorsque la NullText valeur change.

PropertyDescriptorChanged
Obsolète.

Se produit lorsque la valeur de propriété PropertyDescriptor change.

ReadOnlyChanged
Obsolète.

Se produit lorsque la valeur de propriété ReadOnly change.

WidthChanged
Obsolète.

Se produit lorsque la valeur de propriété Width change.

Implémentations d’interfaces explicites

Nom Description
IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control)
Obsolète.

Informe le DataGrid contrôle que l’utilisateur a commencé à modifier la colonne.

S’applique à

Voir aussi