Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase DataGridColumnStyle

 

Publicado: octubre de 2016

Especifica el aspecto, el formato del texto y el comportamiento de una columna de control System.Windows.Forms.DataGrid. Esta clase es abstracta.

Espacio de nombres:   System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Windows.Forms.DataGridColumnStyle
        System.Windows.Forms.DataGridBoolColumn
        System.Windows.Forms.DataGridTextBoxColumn

public abstract class DataGridColumnStyle : Component, IDataGridColumnStyleEditingNotificationService

NombreDescripción
System_CAPS_pubmethodDataGridColumnStyle()

En una clase derivada, inicializa una nueva instancia de la clase DataGridColumnStyle.

System_CAPS_pubmethodDataGridColumnStyle(PropertyDescriptor)

Inicializa una nueva instancia de la clase DataGridColumnStyle con el objeto PropertyDescriptor especificado.

NombreDescripción
System_CAPS_pubpropertyAlignment

Obtiene o establece la alineación de texto de una columna.

System_CAPS_protpropertyCanRaiseEvents

Obtiene un valor que indica si el componente puede provocar un evento.(Heredado de Component).

System_CAPS_pubpropertyContainer

Obtiene IContainer que contiene Component.(Heredado de Component).

System_CAPS_pubpropertyDataGridTableStyle

Obtiene el DataGridTableStyle de la columna.

System_CAPS_protpropertyDesignMode

Obtiene un valor que indica si la Component está actualmente en modo de diseño.(Heredado de Component).

System_CAPS_protpropertyEvents

Obtiene la lista de controladores de eventos que se adjuntará a este Component.(Heredado de Component).

System_CAPS_protpropertyFontHeight

Obtiene el alto de la fuente de la columna.

System_CAPS_pubpropertyHeaderAccessibleObject

Esta API admite la infraestructura producto y no está diseñada para usarse directamente desde el código. Obtiene el AccessibleObject de la columna.

System_CAPS_pubpropertyHeaderText

Obtiene o establece el texto del encabezado de columna.

System_CAPS_pubpropertyMappingName

Obtiene o establece el nombre del miembro de datos para asignar el estilo de columna.

System_CAPS_pubpropertyNullText

Obtiene o establece el texto que se muestra cuando la columna contiene null.

System_CAPS_pubpropertyPropertyDescriptor

Obtiene o establece el PropertyDescriptor que determina los atributos de los datos mostrados por el DataGridColumnStyle.

System_CAPS_pubpropertyReadOnly

Obtiene o establece un valor que indica si se pueden editar los datos de la columna.

System_CAPS_pubpropertySite

Obtiene o establece la ISite de la Component.(Heredado de Component).

System_CAPS_pubpropertyWidth

Obtiene o establece el ancho de la columna.

NombreDescripción
System_CAPS_protmethodAbort(Int32)

Cuando se reemplaza en una clase derivada, inicia una solicitud para interrumpir un procedimiento de edición.

System_CAPS_protmethodBeginUpdate()

Suspende el proceso de pintar la columna hasta que se llama al método EndUpdate.

System_CAPS_protmethodCheckValidDataSource(CurrencyManager)

Se produce una excepción si System.Windows.Forms.DataGrid no tiene un origen de datos válido, o si esta columna no está asignada a una propiedad válida en el origen de datos.

System_CAPS_protmethodColumnStartedEditing(Control)

Informa a System.Windows.Forms.DataGrid de que el usuario ha empezado a editar la columna.

System_CAPS_protmethodCommit(CurrencyManager, Int32)

Cuando se reemplaza en una clase derivada, inicia una solicitud para completar un procedimiento de edición.

System_CAPS_protmethodConcedeFocus()

Notifica a una columna que debe ceder el foco al control que hospeda.

System_CAPS_protmethodCreateHeaderAccessibleObject()

Obtiene el AccessibleObject de la columna.

System_CAPS_pubmethodCreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar a un proxy que se utiliza para comunicarse con un objeto remoto.(Heredado de MarshalByRefObject).

System_CAPS_pubmethodDispose()

Libera todos los recursos que usa Component.(Heredado de Component).

System_CAPS_protmethodDispose(Boolean)

Libera los recursos no administrados que usa Component y libera los recursos administrados de forma opcional.(Heredado de Component).

System_CAPS_protmethodEdit(CurrencyManager, Int32, Rectangle, Boolean)

Prepara una celda para que pueda editarse.

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

Prepara la celda para la edición con el CurrencyManager, el número de fila y los parámetros Rectangle especificados.

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

Cuando se reemplaza en una clase derivada, prepara una celda para su edición.

System_CAPS_protmethodEndUpdate()

Reinicia el proceso de pintar las columnas que se suspendió al llamar al método BeginUpdate.

System_CAPS_protmethodEnterNullValue()

Escribe un DBNull.Value en la columna.

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Libera recursos no administrados y realiza otras operaciones de limpieza antes de que se reclame el elemento Component durante la recolección de elementos no usados.(Heredado de Component).

System_CAPS_protmethodGetColumnValueAtRow(CurrencyManager, Int32)

Obtiene el valor de la fila especificada del CurrencyManager especificado.

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_protmethodGetMinimumHeight()

Cuando se reemplaza en una clase derivada, obtiene el alto mínimo de una fila.

System_CAPS_protmethodGetPreferredHeight(Graphics, Object)

Cuando se reemplaza en una clase derivada, obtiene el alto que se utiliza para cambiar automáticamente el tamaño de las columnas.

System_CAPS_protmethodGetPreferredSize(Graphics, Object)

Cuando se reemplaza en una clase derivada, obtiene el ancho y el alto del valor especificado. El ancho y el alto se usan cuando el usuario se desplaza hasta DataGridTableStyle mediante DataGridColumnStyle.

System_CAPS_protmethodGetService(Type)

Devuelve un objeto que representa el servicio suministrado por Component o por Container.(Heredado de Component).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodInitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_protmethodInvalidate()

Vuelve a dibujar la columna y hace que se envíe un mensaje de pintura al control.

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone(Boolean)

Crea una copia superficial del elemento actual MarshalByRefObject objeto.(Heredado de MarshalByRefObject).

System_CAPS_protmethodPaint(Graphics, Rectangle, CurrencyManager, Int32)

Pinta el DataGridColumnStyle con el Graphics, Rectangle, CurrencyManager y número de fila determinados.

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

Cuando se reemplaza en una clase derivada, pinta un DataGridColumnStyle con el Graphics, Rectangle, CurrencyManager, número de fila y alineación predeterminados.

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

Pinta un DataGridColumnStyle con el Graphics, Rectangle, CurrencyManager, número de fila, color de fondo, color de primer plano y alineación especificados.

System_CAPS_protmethodReleaseHostedControl()

Permite que la columna libere recursos cuando el control contenido en esta no es necesario.

System_CAPS_pubmethodResetHeaderText()

Restablece HeaderText a su valor predeterminado, null.

System_CAPS_protmethodSetColumnValueAtRow(CurrencyManager, Int32, Object)

Establece el valor de una fila especificada con el valor de un CurrencyManager especificado.

System_CAPS_protmethodSetDataGrid(DataGrid)

Establece el control System.Windows.Forms.DataGrid al que pertenece esta columna.

System_CAPS_protmethodSetDataGridInColumn(DataGrid)

Establece el System.Windows.Forms.DataGrid para la columna.

System_CAPS_pubmethodToString()

Devuelve un String que contiene el nombre de la Component, si existe. Este método no se debe invalidar.(Heredado de Component).

System_CAPS_protmethodUpdateUI(CurrencyManager, Int32, String)

Actualiza el valor de una fila especificada con el texto dado.

NombreDescripción
System_CAPS_pubeventAlignmentChanged

Se produce cuando cambia el valor de la propiedad Alignment.

System_CAPS_pubeventDisposed

Se produce cuando el componente se elimina mediante una llamada a la Dispose (método).(Heredado de Component).

System_CAPS_pubeventFontChanged

Aparece cuando cambia la fuente de la columna.

System_CAPS_pubeventHeaderTextChanged

Se produce cuando cambia el valor de la propiedad HeaderText.

System_CAPS_pubeventMappingNameChanged

Se produce cuando cambia el valor MappingName.

System_CAPS_pubeventNullTextChanged

Se produce cuando cambia el valor NullText.

System_CAPS_pubeventPropertyDescriptorChanged

Se produce cuando cambia el valor de la propiedad PropertyDescriptor.

System_CAPS_pubeventReadOnlyChanged

Se produce cuando cambia el valor de la propiedad ReadOnly.

System_CAPS_pubeventWidthChanged

Se produce cuando cambia el valor de la propiedad Width.

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethodIDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control)

Informa al control DataGrid de que el usuario ha empezado a editar la columna.

The collection of T:System.Windows.Forms.DataGridColumnStyle objects (the T:System.Windows.Forms.GridColumnStylesCollection) is accessed through the T:System.Windows.Forms.DataGrid control's P:System.Windows.Forms.DataGrid.TableStyles property.

The T:System.Windows.Forms.DataGrid control automatically creates a collection of T:System.Windows.Forms.DataGridColumnStyle objects for you when you set the P:System.Windows.Forms.DataGrid.DataSource property to an appropriate data source. The objects created actually are instances of one of the following classes that inherit from T:System.Windows.Forms.DataGridColumnStyle: T:System.Windows.Forms.DataGridBoolColumn or T:System.Windows.Forms.DataGridTextBoxColumn class.

To format the data display, set the P:System.Windows.Forms.DataGridTextBoxColumn.Format property of the T:System.Windows.Forms.DataGridTextBoxColumn class to one of the formatting values. For more information about valid formatting values, see Formatting Types and Custom DateTime Format Strings.

You can also create your own set of T:System.Windows.Forms.DataGridColumnStyle objects and add them to the T:System.Windows.Forms.GridColumnStylesCollection. When you do so, you must set the P:System.Windows.Forms.DataGridColumnStyle.MappingName of each column style to the P:System.Data.DataColumn.ColumnName of a T:System.Data.DataColumn to synchronize the display of columns with the actual data.

System_CAPS_cautionPrecaución

Always create T:System.Windows.Forms.DataGridColumnStyle objects and add them to the T:System.Windows.Forms.GridColumnStylesCollection before adding T:System.Windows.Forms.DataGridTableStyle objects to the T:System.Windows.Forms.GridTableStylesCollection. When you add an empty T:System.Windows.Forms.DataGridTableStyle with a valid P:System.Windows.Forms.DataGridTableStyle.MappingName value to the collection, T:System.Windows.Forms.DataGridColumnStyle objects are automatically generated for you. Consequently, an exception will be thrown if you try to add new T:System.Windows.Forms.DataGridColumnStyle objects with duplicate P:System.Windows.Forms.DataGridTableStyle.MappingName values to the T:System.Windows.Forms.GridColumnStylesCollection.

When one of the derived classes is instantiated by a T:System.Windows.Forms.DataGrid control, the class created depends on the P:System.Data.DataColumn.DataType of the T:System.Data.DataColumn associated with the T:System.Windows.Forms.DataGridColumnStyle object. For example, a T:System.Data.DataColumn with its P:System.Data.DataColumn.DataType set to System.Boolean will be associated with a T:System.Windows.Forms.DataGridBoolColumn. To determine the type of any T:System.Windows.Forms.DataGridColumnStyle, use the M:System.Object.GetType method.

To create your own column classes, you can inherit from T:System.Windows.Forms.DataGridColumnStyle. You might want to do this in order to create special columns that host controls, as exemplified by the T:System.Windows.Forms.DataGridTextBox class, which hosts the T:System.Windows.Forms.TextBox control. For example, you can host an T:System.Drawing.Image control to show pictures in columns, or you can create your own user control to host in the column.

The functionality of the T:System.Windows.Forms.DataGridColumnStyle shouldn't be confused with that of the T:System.Data.DataColumn. Whereas the T:System.Data.DataColumn contains the properties and methods appropriate to creating a data table's schema, the T:System.Windows.Forms.DataGridColumnStyle contains the properties and methods related to the appearance of an individual column on the screen.

If a row contains a F:System.DBNull.Value, the text displayed in the column can be set with the P:System.Windows.Forms.DataGridColumnStyle.NullText property.

The T:System.Windows.Forms.DataGridColumnStyle class also allows you to specify the behavior of a column while its data is being changed. The M:System.Windows.Forms.DataGridColumnStyle.BeginUpdate and M:System.Windows.Forms.DataGridColumnStyle.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.

Several methods allow monitoring of the column as it is edited by the user, including the M:System.Windows.Forms.DataGridColumnStyle.Edit(System.Windows.Forms.CurrencyManager,System.Int32,System.Drawing.Rectangle,System.Boolean) and M:System.Windows.Forms.DataGridColumnStyle.Commit(System.Windows.Forms.CurrencyManager,System.Int32) events.

Most of the properties and methods of the class are tailored to controlling a column's appearance. But a few, such as the M:System.Windows.Forms.DataGridColumnStyle.GetColumnValueAtRow(System.Windows.Forms.CurrencyManager,System.Int32) and M:System.Windows.Forms.DataGridColumnStyle.SetColumnValueAtRow(System.Windows.Forms.CurrencyManager,System.Int32,System.Object) allow you to examine and change the value in a specified cell.

Notas para implementadores:

When you inherit from T:System.Windows.Forms.DataGridColumnStyle, you must override the following members: M:System.Windows.Forms.DataGridColumnStyle.Abort(System.Int32), M:System.Windows.Forms.DataGridColumnStyle.Commit(System.Windows.Forms.CurrencyManager,System.Int32), M:System.Windows.Forms.DataGridColumnStyle.Edit(System.Windows.Forms.CurrencyManager,System.Int32,System.Drawing.Rectangle,System.Boolean), and M:System.Windows.Forms.DataGridColumnStyle.Paint(System.Drawing.Graphics,System.Drawing.Rectangle,System.Windows.Forms.CurrencyManager,System.Int32) (twice).

The following code example creates a T:System.Windows.Forms.DataGridColumnStyle that hosts a T:System.Windows.Forms.DateTimePicker control.

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());
    }
}

.NET Framework
Disponible desde 1.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: