DataGridColumnStyle DataGridColumnStyle DataGridColumnStyle DataGridColumnStyle Class

Определение

Задает внешний вид, форматирование текста и поведение столбца элемента управления 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 , на котором 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 ) осуществляется через свойствоэлементауправления.TableStylesThe collection of DataGridColumnStyle objects (the GridColumnStylesCollection) is accessed through the System.Windows.Forms.DataGrid control's TableStyles property.

Элемент управления автоматически создает DataGridColumnStyle коллекцию объектов DataSource , когда свойству присваивается соответствующий источник данных. System.Windows.Forms.DataGridThe 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 класса или DataGridTextBoxColumn .The 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 DataGridColumnStyle значения с MappingName допустимым значением объекты создаются автоматически.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.

Когда один 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 , будет связан с. DataGridBoolColumnFor 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 события и. CommitSeveral 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) (два раза).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() DataGridColumnStyle() DataGridColumnStyle()

Инициализирует новый экземпляр класса DataGridColumnStyle в производном классе.In a derived class, initializes a new instance of the DataGridColumnStyle class.

DataGridColumnStyle(PropertyDescriptor) DataGridColumnStyle(PropertyDescriptor) DataGridColumnStyle(PropertyDescriptor) DataGridColumnStyle(PropertyDescriptor)

Инициализирует новый экземпляр класса DataGridColumnStyle указанным значением PropertyDescriptor.Initializes a new instance of the DataGridColumnStyle class with the specified PropertyDescriptor.

Свойства

Alignment Alignment Alignment Alignment

Получает или задает выравнивание текста в столбце.Gets or sets the alignment of text in a column.

CanRaiseEvents CanRaiseEvents CanRaiseEvents CanRaiseEvents

Возвращает значение, показывающее, может ли компонент вызывать событие.Gets a value indicating whether the component can raise an event.

(Inherited from Component)
Container Container Container Container

Возвращает контейнер IContainer, содержащий компонент Component.Gets the IContainer that contains the Component.

(Inherited from Component)
DataGridTableStyle DataGridTableStyle DataGridTableStyle DataGridTableStyle

Получает объект DataGridTableStyle для столбца.Gets the DataGridTableStyle for the column.

DesignMode DesignMode DesignMode DesignMode

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.Gets a value that indicates whether the Component is currently in design mode.

(Inherited from Component)
Events Events Events Events

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.Gets the list of event handlers that are attached to this Component.

(Inherited from Component)
FontHeight FontHeight FontHeight FontHeight

Получает высоту шрифта столбца.Gets the height of the column's font.

HeaderAccessibleObject HeaderAccessibleObject HeaderAccessibleObject HeaderAccessibleObject

Получает объект AccessibleObject для столбца.Gets the AccessibleObject for the column.

HeaderText HeaderText HeaderText HeaderText

Получает или задает текст заголовка столбца.Gets or sets the text of the column header.

MappingName MappingName MappingName MappingName

Получает или задает имя элемента данных, на который отображается стиль столбца.Gets or sets the name of the data member to map the column style to.

NullText NullText NullText NullText

Получает или задает текст, который отображается, если столбец содержит значение null.Gets or sets the text that is displayed when the column contains null.

PropertyDescriptor PropertyDescriptor PropertyDescriptor PropertyDescriptor

Получает или задает дескриптор PropertyDescriptor, определяющий атрибуты данных, отображаемых объектом DataGridColumnStyle.Gets or sets the PropertyDescriptor that determines the attributes of data displayed by the DataGridColumnStyle.

ReadOnly ReadOnly ReadOnly ReadOnly

Получает или задает значение, показывающее, можно ли изменять данные в столбце.Gets or sets a value indicating whether the data in the column can be edited.

Site Site Site Site

Возвращает или задает ISite объекта Component.Gets or sets the ISite of the Component.

(Inherited from Component)
Width Width Width Width

Получает или задает ширину столбца.Gets or sets the width of the column.

Методы

Abort(Int32) Abort(Int32) Abort(Int32) Abort(Int32)

При переопределении в производном классе инициирует запрос на прерывание процедуры редактирования.When overridden in a derived class, initiates a request to interrupt an edit procedure.

BeginUpdate() BeginUpdate() BeginUpdate() BeginUpdate()

Приостанавливает закрашивание столбца до тех пор, пока не будет вызван метод EndUpdate().Suspends the painting of the column until the EndUpdate() method is called.

CheckValidDataSource(CurrencyManager) CheckValidDataSource(CurrencyManager) CheckValidDataSource(CurrencyManager) 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) ColumnStartedEditing(Control) ColumnStartedEditing(Control) ColumnStartedEditing(Control)

Информирует объект DataGrid о том, что пользователь начал редактирование столбца.Informs the DataGrid that the user has begun editing the column.

Commit(CurrencyManager, Int32) Commit(CurrencyManager, Int32) Commit(CurrencyManager, Int32) Commit(CurrencyManager, Int32)

При переопределении в производном классе инициирует запрос на окончание процедуры редактирования.When overridden in a derived class, initiates a request to complete an editing procedure.

ConcedeFocus() ConcedeFocus() ConcedeFocus() ConcedeFocus()

Сообщает столбцу, что он должен передать фокус элементу управления, который в нем размещен.Notifies a column that it must relinquish the focus to the control it is hosting.

CreateHeaderAccessibleObject() CreateHeaderAccessibleObject() CreateHeaderAccessibleObject() CreateHeaderAccessibleObject()

Получает объект AccessibleObject для столбца.Gets the AccessibleObject for the column.

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Dispose() Dispose() Dispose() Dispose()

Освобождает все ресурсы, занятые модулем Component.Releases all resources used by the Component.

(Inherited from Component)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом Component, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the Component and optionally releases the managed resources.

(Inherited from Component)
Edit(CurrencyManager, Int32, Rectangle, Boolean) Edit(CurrencyManager, Int32, Rectangle, Boolean) Edit(CurrencyManager, Int32, Rectangle, Boolean) Edit(CurrencyManager, Int32, Rectangle, Boolean)

Подготавливает ячейку к редактированию.Prepares a cell for editing.

Edit(CurrencyManager, Int32, Rectangle, Boolean, String) Edit(CurrencyManager, Int32, Rectangle, Boolean, String) Edit(CurrencyManager, Int32, Rectangle, Boolean, String) 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) Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean) Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean) Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean)

В случае переопределения в производном классе, подготавливает ячейку к редактированию.When overridden in a deriving class, prepares a cell for editing.

EndUpdate() EndUpdate() EndUpdate() EndUpdate()

Возобновляет закрашивание столбца, приостановленное вызовом метода BeginUpdate().Resumes the painting of columns suspended by calling the BeginUpdate() method.

EnterNullValue() EnterNullValue() EnterNullValue() EnterNullValue()

Вводит значение Value в столбец.Enters a Value into the column.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetColumnValueAtRow(CurrencyManager, Int32) GetColumnValueAtRow(CurrencyManager, Int32) GetColumnValueAtRow(CurrencyManager, Int32) GetColumnValueAtRow(CurrencyManager, Int32)

Получает значение в указанной строке из указанного объекта CurrencyManager.Gets the value in the specified row from the specified CurrencyManager.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetMinimumHeight() GetMinimumHeight() GetMinimumHeight() GetMinimumHeight()

При переопределении в производном классе получает минимальную высоту строки.When overridden in a derived class, gets the minimum height of a row.

GetPreferredHeight(Graphics, Object) GetPreferredHeight(Graphics, Object) GetPreferredHeight(Graphics, Object) GetPreferredHeight(Graphics, Object)

При переопределении в производном классе получает высоту, используемую для автоматического изменения размеров столбцов.When overridden in a derived class, gets the height used for automatically resizing columns.

GetPreferredSize(Graphics, Object) GetPreferredSize(Graphics, Object) GetPreferredSize(Graphics, Object) 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) GetService(Type) GetService(Type) GetService(Type)

Возвращает объект, представляющий службу, обеспечиваемую компонентом Component или его контейнером Container.Returns an object that represents a service provided by the Component or by its Container.

(Inherited from Component)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
Invalidate() Invalidate() Invalidate() Invalidate()

Перерисовывает столбец и вызывает отправку в элемент управления сообщения о закраске.Redraws the column and causes a paint message to be sent to the control.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
Paint(Graphics, Rectangle, CurrencyManager, Int32) Paint(Graphics, Rectangle, CurrencyManager, Int32) Paint(Graphics, Rectangle, CurrencyManager, Int32) Paint(Graphics, Rectangle, CurrencyManager, Int32)

Закрашивает объект DataGridColumnStyle с указанными объектами Graphics, Rectangle, CurrencyManager и номером строки.Paints the DataGridColumnStyle with the specified Graphics, Rectangle, CurrencyManager, and row number.

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

При переопределении в производном классе закрашивает DataGridColumnStyle с указанными объектамиGraphics, Rectangle, 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) Paint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean) Paint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean) Paint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean)

Закрашивает объект DataGridColumnStyle с указанными объектами Graphics, Rectangle, CurrencyManager, номером строки, цветом фона, цветом изображения и выравниванием.Paints a DataGridColumnStyle with the specified Graphics, Rectangle, CurrencyManager, row number, background color, foreground color, and alignment.

ReleaseHostedControl() ReleaseHostedControl() ReleaseHostedControl() ReleaseHostedControl()

Позволяет столбцу освободить ресурсы, когда размещенный в нем элемент управления больше не нужен.Allows the column to free resources when the control it hosts is not needed.

ResetHeaderText() ResetHeaderText() ResetHeaderText() ResetHeaderText()

Сбрасывает свойство HeaderText, устанавливая его в значение по умолчанию, равное null.Resets the HeaderText to its default value, null.

SetColumnValueAtRow(CurrencyManager, Int32, Object) SetColumnValueAtRow(CurrencyManager, Int32, Object) SetColumnValueAtRow(CurrencyManager, Int32, Object) SetColumnValueAtRow(CurrencyManager, Int32, Object)

Задает значение в указанной строке равным значению из указанного объекта CurrencyManager.Sets the value in a specified row with the value from a specified CurrencyManager.

SetDataGrid(DataGrid) SetDataGrid(DataGrid) SetDataGrid(DataGrid) SetDataGrid(DataGrid)

Задает элемент управления DataGrid, содержащий данный столбец.Sets the DataGrid control that this column belongs to.

SetDataGridInColumn(DataGrid) SetDataGridInColumn(DataGrid) SetDataGridInColumn(DataGrid) SetDataGridInColumn(DataGrid)

Задает объект DataGrid для столбца.Sets the DataGrid for the column.

ToString() ToString() ToString() ToString()

Возвращает объект String, содержащий имя Component, если оно есть.Returns a String containing the name of the Component, if any. Этот метод не следует переопределять.This method should not be overridden.

(Inherited from Component)
UpdateUI(CurrencyManager, Int32, String) UpdateUI(CurrencyManager, Int32, String) UpdateUI(CurrencyManager, Int32, String) UpdateUI(CurrencyManager, Int32, String)

Обновляет значение указанной строки данным текстом.Updates the value of a specified row with the given text.

События

AlignmentChanged AlignmentChanged AlignmentChanged AlignmentChanged

Происходит при изменении значения свойства Alignment.Occurs when the Alignment property value changes.

Disposed Disposed Disposed Disposed

Происходит при удалении компонента вызовом метода Dispose().Occurs when the component is disposed by a call to the Dispose() method.

(Inherited from Component)
FontChanged FontChanged FontChanged FontChanged

Происходит при изменении шрифта столбца.Occurs when the column's font changes.

HeaderTextChanged HeaderTextChanged HeaderTextChanged HeaderTextChanged

Происходит при изменении значения свойства HeaderText.Occurs when the HeaderText property value changes.

MappingNameChanged MappingNameChanged MappingNameChanged MappingNameChanged

Происходит при изменении значения свойства MappingName.Occurs when the MappingName value changes.

NullTextChanged NullTextChanged NullTextChanged NullTextChanged

Происходит при изменении значения свойства NullText.Occurs when the NullText value changes.

PropertyDescriptorChanged PropertyDescriptorChanged PropertyDescriptorChanged PropertyDescriptorChanged

Происходит при изменении значения свойства PropertyDescriptor.Occurs when the PropertyDescriptor property value changes.

ReadOnlyChanged ReadOnlyChanged ReadOnlyChanged ReadOnlyChanged

Происходит при изменении значения свойства ReadOnly.Occurs when the ReadOnly property value changes.

WidthChanged WidthChanged WidthChanged WidthChanged

Происходит при изменении значения свойства Width.Occurs when the Width property value changes.

Явные реализации интерфейса

IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control) IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control) IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control) IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control)

Информирует элемент управления DataGrid о начале редактирования столбца пользователем.Informs the DataGrid control that the user has begun editing the column.

Применяется к

Дополнительно