Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

DataGridColumnStyle (Clase)

especifica el aspecto, el formato de texto, y el comportamiento de una columna de control de System.Windows.Forms.DataGrid . esta clase es abstracta.

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

public abstract class DataGridColumnStyle : Component, 
	IDataGridColumnStyleEditingNotificationService

El tipo DataGridColumnStyle expone los siguientes miembros.

  NombreDescripción
Método públicoDataGridColumnStyle()En una clase derivada, inicializa una nueva instancia de la clase de DataGridColumnStyle .
Método públicoDataGridColumnStyle(PropertyDescriptor)Inicializa una nueva instancia de la clase de DataGridColumnStyle con PropertyDescriptorespecificado.
Arriba

  NombreDescripción
Propiedad públicaAlignmentObtiene o establece la alineación del texto en una columna.
Propiedad protegidaCanRaiseEventsObtiene un valor que indica si el componente puede generar un evento. (Se hereda de Component).
Propiedad públicaContainerObtiene IContainer que contiene Component. (Se hereda de Component).
Propiedad públicaDataGridTableStyleobtiene DataGridTableStyle para la columna.
Propiedad protegidaDesignModeObtiene un valor que indica si Component está actualmente en modo de diseño. (Se hereda de Component).
Propiedad protegidaEventsObtiene la lista de controladores de eventos asociados a Component. (Se hereda de Component).
Propiedad protegidaFontHeightobtiene el alto de la fuente de la columna.
Propiedad públicaHeaderAccessibleObjectInfraestructura. obtiene AccessibleObject para la columna.
Propiedad públicaHeaderTextObtiene o establece el texto del encabezado de columna.
Propiedad públicaMappingNameObtiene o establece el nombre del miembro de datos para asignar el estilo de columna a.
Propiedad públicaNullTextObtiene o establece el texto que se muestra cuando la columna contiene null.
Propiedad públicaPropertyDescriptorObtiene o establece PropertyDescriptor que determina los atributos de los datos mostrados en DataGridColumnStyle.
Propiedad públicaReadOnlyObtiene o establece un valor que indica si los datos de la columna se pueden editar.
Propiedad públicaSiteObtiene o establece ISite de Component. (Se hereda de Component).
Propiedad públicaWidthobtiene o establece el ancho de la columna.
Arriba

  NombreDescripción
Método protegidoAbortCuando se reemplaza en una clase derivada, inicia una solicitud para dividir un procedimiento de edición.
Método protegidoBeginUpdateSuspende la descripción de la columna hasta que se llame al método de EndUpdate .
Método protegidoCheckValidDataSourceProduce una excepción si System.Windows.Forms.DataGrid no tiene un origen de datos válido, o si esta columna no se asigna a una propiedad válida en el origen de datos.
Método protegidoColumnStartedEditingInforma a System.Windows.Forms.DataGrid que ha iniciado el usuario editando la columna.
Método protegidoCommitCuando se reemplaza en una clase derivada, inicia una solicitud para completar un procedimiento de edición.
Método protegidoConcedeFocusNotifica a una columna que debe abandonar el foco al control que se hospeda.
Método protegidoCreateHeaderAccessibleObjectobtiene AccessibleObject para la columna.
Método públicoCreateObjRefCrea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. (Se hereda de MarshalByRefObject).
Método públicoDispose()Libera todos los recursos utilizados por Component. (Se hereda de Component).
Método protegidoDispose(Boolean)Libera los recursos no administrados que utiliza Component y libera los recursos administrados de forma opcional. (Se hereda de Component).
Método protegidoEdit(CurrencyManager, Int32, Rectangle, Boolean)Prepara una celda para editar.
Método protegidoEdit(CurrencyManager, Int32, Rectangle, Boolean, String)Prepara a la celda para editar mediante CurrencyManager, el número de fila, y los parámetros especificados de Rectangle .
Método protegidoEdit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean)Cuando se reemplaza en una clase derivada, prepara una celda para editar.
Método protegidoEndUpdateReanuda el dibujo de las columnas suspendidas llamando al método de BeginUpdate .
Método protegidoEnterNullValueentra en DBNull.Value en la columna.
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoFinalizeLibera recursos no administrados y realiza otras operaciones de limpieza antes de que se reclame el objeto Component durante la recolección de elementos no utilizados. (Se hereda de Component).
Método protegidoGetColumnValueAtRowObtiene el valor de la fila especificada de CurrencyManagerespecificado.
Método públicoGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetLifetimeServiceRecupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegidoGetMinimumHeightCuando se reemplaza en una clase derivada, obtiene el alto mínimo de una fila.
Método protegidoGetPreferredHeightCuando se reemplaza en una clase derivada, obtiene el alto utilizado para cambiar automáticamente el tamaño de columnas.
Método protegidoGetPreferredSizeCuando se reemplaza en una clase derivada, obtiene el ancho y el alto del valor especificado. Se utilizan el ancho y el alto cuando el usuario navega a DataGridTableStyle mediante DataGridColumnStyle.
Método protegidoGetServiceDevuelve un objeto que representa el servicio suministrado por Component o por Container. (Se hereda de Component).
Método públicoGetType Obtiene el Typede la instancia actual. (Se hereda de Object).
Método públicoInitializeLifetimeServiceObtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegidoInvalidateRedibuja la columna y produce un mensaje de dibujo que se enviará al control.
Método protegidoMemberwiseClone() Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegidoMemberwiseClone(Boolean)Crea una copia superficial del objeto MarshalByRefObject actual. (Se hereda de MarshalByRefObject).
Método protegidoPaint(Graphics, Rectangle, CurrencyManager, Int32)pinta DataGridColumnStyle con Graphicsespecificado, Rectangle, CurrencyManager, y el número de fila.
Método protegidoPaint(Graphics, Rectangle, CurrencyManager, Int32, Boolean)Cuando se reemplaza en una clase derivada, pinta DataGridColumnStyle con Graphicsespecificado, Rectangle, CurrencyManager, número de fila, y la alineación.
Método protegidoPaint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean)pinta DataGridColumnStyle con Graphicsespecificado, Rectangle, CurrencyManager, el número de fila, el color de fondo, el color de primer plano, y la alineación.
Método protegidoReleaseHostedControlPermite que la columna libere los recursos cuando el control se host no es necesario.
Método públicoResetHeaderTextrestablece HeaderText a su valor predeterminado, null.
Método protegidoSetColumnValueAtRowEstablece el valor de una fila especificada con el valor de CurrencyManagerespecificado.
Método protegidoSetDataGridEstablece el control de System.Windows.Forms.DataGrid que esta columna pertenece.
Método protegidoSetDataGridInColumnestablece System.Windows.Forms.DataGrid para la columna.
Método públicoToStringDevuelve un objeto String que contiene el nombre del objeto Component, en caso de que exista. Este método no debe reemplazarse. (Se hereda de Component).
Método protegidoUpdateUIActualiza el valor de la fila especificada con el texto especificado.
Arriba

  NombreDescripción
Evento públicoAlignmentChangedSe produce cuando cambia el valor de propiedad de Alignment .
Evento públicoDisposedSe produce cuando el componente se elimina mediante una llamada al método Dispose. (Se hereda de Component).
Evento públicoFontChangedSe produce cuando cambia la fuente de la columna.
Evento públicoHeaderTextChangedSe produce cuando cambia el valor de propiedad de HeaderText .
Evento públicoMappingNameChangedSe produce cuando cambia el valor de MappingName .
Evento públicoNullTextChangedSe produce cuando cambia el valor de NullText .
Evento públicoPropertyDescriptorChangedSe produce cuando cambia el valor de propiedad de PropertyDescriptor .
Evento públicoReadOnlyChangedSe produce cuando cambia el valor de propiedad de ReadOnly .
Evento públicoWidthChangedSe produce cuando cambia el valor de propiedad de Width .
Arriba

  NombreDescripción
Implementación explícita de interfacesMétodo privadoIDataGridColumnStyleEditingNotificationService.ColumnStartedEditingInforma al control de DataGrid que ha iniciado el usuario editando la columna.
Arriba

La colección de objetos DataGridColumnStyle ( GridColumnStylesCollection) se obtiene acceso mediante la propiedad de TableStyles de control de System.Windows.Forms.DataGrid .

El control de System.Windows.Forms.DataGrid crea automáticamente una colección de objetos DataGridColumnStyle automáticamente cuando se establece la propiedad de DataSource a un origen de datos adecuado. Los objetos creados en realidad son instancias de una de las siguientes clases que heredan de DataGridColumnStyle: DataGridBoolColumn o clase de DataGridTextBoxColumn .

Para dar formato a la presentación de datos, establezca la propiedad de Format de la clase de DataGridTextBoxColumn en uno de los valores de formato. Para obtener más información sobre los valores válidos de formato, vea Aplicar formato a tipos y Cadenas de formato de fecha y hora personalizadas.

También puede crear para su propio conjunto de objetos de DataGridColumnStyle y agregarlos a GridColumnStylesCollection. Si lo hace, debe establecer MappingName de cada estilo de columna a ColumnName de DataColumn para sincronizar la presentación de columnas con los datos reales.

Nota de precauciónPrecaución

Crear los objetos de DataGridColumnStyle y agréguelos siempre a GridColumnStylesCollection antes de agregar objetos de DataGridTableStyle a GridTableStylesCollection. Cuando se agrega DataGridTableStyle vacío con un valor válido de MappingName a la colección, los objetos de DataGridColumnStyle se generan automáticamente para usted. Por consiguiente, se producirá una excepción si intenta agregar nuevos objetos de DataGridColumnStyle con los valores duplicados de MappingName a GridColumnStylesCollection.

Cuando una de las clases derivadas crea instancias por un control de System.Windows.Forms.DataGrid , la clase creada depende de DataType de DataColumn asociado con el objeto de DataGridColumnStyle . Por ejemplo, DataColumn con el DataType establecido en System.Boolean estará asociado a DataGridBoolColumn. para determinar el tipo de cualquier DataGridColumnStyle, utilice el método de GetType .

Para crear dispone de clases de columnas, puede heredar de DataGridColumnStyle. Puede hacer esto para crear las columnas especiales que los controles host, como se indica en la clase de DataGridTextBox , que hospeda el control de TextBox . Por ejemplo, puede hospedar un control de Image mostrar imágenes en columnas, o puede crear dispone del control de usuario al host en la columna.

la funcionalidad de DataGridColumnStyle no se debe confundir con el de DataColumn. Mientras que DataColumn contiene las propiedades y los métodos adecuados para crear el esquema de una tabla de datos, DataGridColumnStyle contiene propiedades y métodos relacionados con el aspecto de una columna individual en la pantalla.

Si una fila contiene DBNull.Value, el texto de la columna se puede establecer con la propiedad de NullText .

La clase de DataGridColumnStyle también permite especificar el comportamiento de una columna mientras se está modificando los datos. Los métodos de BeginUpdate y de EndUpdate suspenden temporalmente el gráfico de la columna tal como las actualizaciones grandes que se crean a los datos de la columna. Sin esta funcionalidad, cada cambio en cada celda de la cuadrícula inmediatamente se dibujaría; esto podría convertirse en un factor de distracción al usuario y un pasivo de rendimiento.

Varios métodos permiten controlar de la columna mientras se está editando por el usuario, incluidos el Edit y eventos de Commit .

La mayoría de las propiedades y métodos de la clase son específicos para controlar la apariencia de una columna. Pero algunos, como GetColumnValueAtRow y el SetColumnValueAtRow permiten examinar y cambiar el valor de una celda especificada.

Notas para los implementadores

Cuando hereda de DataGridColumnStyle, debe reemplazar los miembros siguientes: Abort, Commit, Edit, y Paint (dos veces).

El ejemplo de código siguiente crea DataGridColumnStyle que hospeda un control de DateTimePicker .


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

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros públicos static (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft