Leer en inglés

Compartir a través de


DataGridViewColumn Clase

Definición

Representa una columna de un control DataGridView.

[System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.DataGridViewColumnConverter))]
public class DataGridViewColumn : System.Windows.Forms.DataGridViewBand, IDisposable, System.ComponentModel.IComponent
Herencia
Derivado
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se crea un Formulario Windows Forms con un DataGridView y un conjunto de botones. Cada etiqueta de botón describe una operación relacionada con una DataGridViewColumn propiedad, como intercambiar la primera y la última columna (mediante la DisplayIndex propiedad ) o cambiar el texto de un encabezado de columna (mediante la HeaderText propiedad ). Al hacer clic en un botón se cambia la propiedad asociada de DataGridViewColumn.

using System.Windows.Forms;
using System;
using System.Drawing;

public class DataGridViewColumnDemo : Form
{
    #region "set up form"
    public DataGridViewColumnDemo()
    {
        InitializeComponent();

        AddButton(Button1, "Reset",
            new EventHandler(ResetToDisorder));
        AddButton(Button2, "Change Column 3 Header",
            new EventHandler(ChangeColumn3Header));
        AddButton(Button3, "Change Meatloaf Recipe",
            new EventHandler(ChangeMeatloafRecipe));
        AddAdditionalButtons();

        InitializeDataGridView();
    }

    DataGridView dataGridView;
    Button Button1 = new Button();
    Button Button2 = new Button();
    Button Button3 = new Button();
    Button Button4 = new Button();
    Button Button5 = new Button();
    Button Button6 = new Button();
    Button Button7 = new Button();
    Button Button8 = new Button();
    Button Button9 = new Button();
    Button Button10 = new Button();
    FlowLayoutPanel FlowLayoutPanel1 = new FlowLayoutPanel();

    private void InitializeComponent()
    {
        FlowLayoutPanel1.Location = new Point(454, 0);
        FlowLayoutPanel1.AutoSize = true;
        FlowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
        FlowLayoutPanel1.Name = "flowlayoutpanel";
        ClientSize = new System.Drawing.Size(614, 360);
        Controls.Add(this.FlowLayoutPanel1);
        Text = this.GetType().Name;
        AutoSize = true;
    }
    #endregion

    #region "set up DataGridView"

    private string thirdColumnHeader = "Main Ingredients";
    private string boringMeatloaf = "ground beef";
    private string boringMeatloafRanking = "*";
    private bool boringRecipe;
    private bool shortMode;

    private void InitializeDataGridView()
    {
        dataGridView = new System.Windows.Forms.DataGridView();
        Controls.Add(dataGridView);
        dataGridView.Size = new Size(300, 200);

        // Create an unbound DataGridView by declaring a
        // column count.
        dataGridView.ColumnCount = 4;
        AdjustDataGridViewSizing();

        // Set the column header style.
        DataGridViewCellStyle columnHeaderStyle =
            new DataGridViewCellStyle();
        columnHeaderStyle.BackColor = Color.Aqua;
        columnHeaderStyle.Font =
            new Font("Verdana", 10, FontStyle.Bold);
        dataGridView.ColumnHeadersDefaultCellStyle =
            columnHeaderStyle;

        // Set the column header names.
        dataGridView.Columns[0].Name = "Recipe";
        dataGridView.Columns[1].Name = "Category";
        dataGridView.Columns[2].Name = thirdColumnHeader;
        dataGridView.Columns[3].Name = "Rating";

        PostColumnCreation();

        // Populate the rows.
        string[] row1 = new string[]{"Meatloaf", 
                                        "Main Dish", boringMeatloaf, boringMeatloafRanking};
        string[] row2 = new string[]{"Key Lime Pie", 
                                        "Dessert", "lime juice, evaporated milk", "****"};
        string[] row3 = new string[]{"Orange-Salsa Pork Chops", 
                                        "Main Dish", "pork chops, salsa, orange juice", "****"};
        string[] row4 = new string[]{"Black Bean and Rice Salad", 
                                        "Salad", "black beans, brown rice", "****"};
        string[] row5 = new string[]{"Chocolate Cheesecake", 
                                        "Dessert", "cream cheese", "***"};
        string[] row6 = new string[]{"Black Bean Dip", "Appetizer",
                                        "black beans, sour cream", "***"};
        object[] rows = new object[] { row1, row2, row3, row4, row5, row6 };

        foreach (string[] rowArray in rows)
        {
            dataGridView.Rows.Add(rowArray);
        }

        shortMode = false;
        boringRecipe = true;
    }

    private void AddButton(Button button, string buttonLabel,
        EventHandler handler)
    {
        FlowLayoutPanel1.Controls.Add(button);
        button.TabIndex = FlowLayoutPanel1.Controls.Count;
        button.Text = buttonLabel;
        button.AutoSize = true;
        button.Click += handler;
    }

    private void ResetToDisorder(object sender, System.EventArgs e)
    {
        Controls.Remove(dataGridView);
        dataGridView.Dispose();
        InitializeDataGridView();
    }

    private void ChangeColumn3Header(object sender,
        System.EventArgs e)
    {
        Toggle(ref shortMode);
        if (shortMode)
        { dataGridView.Columns[2].HeaderText = "S"; }
        else
        { dataGridView.Columns[2].HeaderText = thirdColumnHeader; }
    }

    private static void Toggle(ref bool toggleThis)
    {
        toggleThis = !toggleThis;
    }

    private void ChangeMeatloafRecipe(object sender,
        System.EventArgs e)
    {
        Toggle(ref boringRecipe);
        if (boringRecipe)
        {
            SetMeatloaf(boringMeatloaf, boringMeatloafRanking);
        }
        else
        {
            string greatMeatloafRecipe =
                "1 lb. lean ground beef, " +
                "1/2 cup bread crumbs, 1/4 cup ketchup," +
                "1/3 tsp onion powder, " +
                "1 clove of garlic, 1/2 pack onion soup mix " +
                " dash of your favorite BBQ Sauce";
            SetMeatloaf(greatMeatloafRecipe, "***");
        }
    }

    private void SetMeatloaf(string recipe, string rating)
    {
        dataGridView.Rows[0].Cells[2].Value = recipe;
        dataGridView.Rows[0].Cells[3].Value = rating;
    }
    #endregion

    #region "demonstration code"
    private void PostColumnCreation()
    {
        AddContextLabel();
        AddCriteriaLabel();
        CustomizeCellsInThirdColumn();
        AddContextMenu();
        SetDefaultCellInFirstColumn();
        ToolTips();

        dataGridView.CellMouseEnter +=
            dataGridView_CellMouseEnter;
        dataGridView.AutoSizeColumnModeChanged +=
            dataGridView_AutoSizeColumnModeChanged;
    }

    private string criteriaLabel = "Column 3 sizing criteria: ";
    private void AddCriteriaLabel()
    {
        AddLabelToPanelIfNotAlreadyThere(criteriaLabel,
            criteriaLabel +
            dataGridView.Columns[2].AutoSizeMode.ToString() +
            ".");
    }

    private void AddContextLabel()
    {
        string labelName = "label";
        AddLabelToPanelIfNotAlreadyThere(labelName,
            "Use shortcut menu to change cell color.");
    }

    private void AddLabelToPanelIfNotAlreadyThere(
        string labelName, string labelText)
    {
        Label label;
        if (FlowLayoutPanel1.Controls[labelName] == null)
        {
            label = new Label();
            label.AutoSize = true;
            label.Name = labelName;
            label.BackColor = Color.Bisque;
            FlowLayoutPanel1.Controls.Add(label);
        }
        else
        {
            label = (Label)FlowLayoutPanel1.Controls[labelName];
        }
        label.Text = labelText;
    }

    private void CustomizeCellsInThirdColumn()
    {
        int thirdColumn = 2;
        DataGridViewColumn column =
            dataGridView.Columns[thirdColumn];
        DataGridViewCell cell = new DataGridViewTextBoxCell();

        cell.Style.BackColor = Color.Wheat;
        column.CellTemplate = cell;
    }

    ToolStripMenuItem toolStripItem1 = new ToolStripMenuItem();

    private void AddContextMenu()
    {
        toolStripItem1.Text = "Redden";
        toolStripItem1.Click += new EventHandler(toolStripItem1_Click);
        ContextMenuStrip strip = new ContextMenuStrip();
        foreach (DataGridViewColumn column in dataGridView.Columns)
        {

            column.ContextMenuStrip = strip;
            column.ContextMenuStrip.Items.Add(toolStripItem1);
        }
    }

    private DataGridViewCellEventArgs mouseLocation;

    // Change the cell's color.
    private void toolStripItem1_Click(object sender, EventArgs args)
    {
        dataGridView.Rows[mouseLocation.RowIndex]
            .Cells[mouseLocation.ColumnIndex].Style.BackColor
            = Color.Red;
    }

    // Deal with hovering over a cell.
    private void dataGridView_CellMouseEnter(object sender,
        DataGridViewCellEventArgs location)
    {
        mouseLocation = location;
    }

    private void SetDefaultCellInFirstColumn()
    {
        DataGridViewColumn firstColumn = dataGridView.Columns[0];
        DataGridViewCellStyle cellStyle =
            new DataGridViewCellStyle();
        cellStyle.BackColor = Color.Thistle;

        firstColumn.DefaultCellStyle = cellStyle;
    }

    private void ToolTips()
    {
        DataGridViewColumn firstColumn = dataGridView.Columns[0];
        DataGridViewColumn thirdColumn = dataGridView.Columns[2];
        firstColumn.ToolTipText =
            "This column uses a default cell.";
        thirdColumn.ToolTipText =
            "This column uses a template cell." +
            " Style changes to one cell apply to all cells.";
    }

    private void AddAdditionalButtons()
    {
        AddButton(Button4, "Set Minimum Width of Column Two",
            new EventHandler(Button4_Click));
        AddButton(Button5, "Set Width of Column One",
            new EventHandler(Button5_Click));
        AddButton(Button6, "Autosize Third Column",
            new EventHandler(Button6_Click));
        AddButton(Button7, "Add Thick Vertical Edge",
            new EventHandler(Button7_Click));
        AddButton(Button8, "Style and Number Columns",
            new EventHandler(Button8_Click));
        AddButton(Button9, "Change Column Header Text",
            new EventHandler(Button9_Click));
        AddButton(Button10, "Swap First and Last Columns",
            new EventHandler(Button10_Click));
    }

    private void AdjustDataGridViewSizing()
    {
        dataGridView.ColumnHeadersHeightSizeMode = 
            DataGridViewColumnHeadersHeightSizeMode.AutoSize;
    }

    //Set the minimum width.
    private void Button4_Click(object sender,
        System.EventArgs e)
    {
        DataGridViewColumn column = dataGridView.Columns[1];
        column.MinimumWidth = 40;
    }

    // Set the width.
    private void Button5_Click(object sender, System.EventArgs e)
    {
        DataGridViewColumn column = dataGridView.Columns[0];
        column.Width = 60;
    }

    // AutoSize the third column.
    private void Button6_Click(object sender,
        System.EventArgs e)
    {
        DataGridViewColumn column = dataGridView.Columns[2];
        column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
    }

    // Set the vertical edge.
    private void Button7_Click(object sender,
        System.EventArgs e)
    {
        int thirdColumn = 2;
        DataGridViewColumn column =
            dataGridView.Columns[thirdColumn];
        column.DividerWidth = 10;
    }

    // Style and number columns.
    private void Button8_Click(object sender,
        EventArgs args)
    {
        DataGridViewCellStyle style = new DataGridViewCellStyle();
        style.Alignment =
            DataGridViewContentAlignment.MiddleCenter;
        style.ForeColor = Color.IndianRed;
        style.BackColor = Color.Ivory;

        foreach (DataGridViewColumn column in dataGridView.Columns)
        {
            column.HeaderCell.Value = column.Index.ToString();
            column.HeaderCell.Style = style;
        }
    }

    // Change the text in the column header.
    private void Button9_Click(object sender,
        EventArgs args)
    {
        foreach (DataGridViewColumn column in dataGridView.Columns)
        {

            column.HeaderText = String.Concat("Column ",
                column.Index.ToString());
        }
    }

    // Swap the last column with the first.
    private void Button10_Click(object sender, EventArgs args)
    {
        DataGridViewColumnCollection columnCollection = dataGridView.Columns;

        DataGridViewColumn firstVisibleColumn =
            columnCollection.GetFirstColumn(DataGridViewElementStates.Visible);
        DataGridViewColumn lastVisibleColumn =
            columnCollection.GetLastColumn(
                DataGridViewElementStates.Visible, DataGridViewElementStates.None);

        int firstColumn_sIndex = firstVisibleColumn.DisplayIndex;
        firstVisibleColumn.DisplayIndex = lastVisibleColumn.DisplayIndex;
        lastVisibleColumn.DisplayIndex = firstColumn_sIndex;
    }

    // Updated the criteria label.
    private void dataGridView_AutoSizeColumnModeChanged(object sender,
        DataGridViewAutoSizeColumnModeEventArgs args)
    {
        args.Column.DataGridView.Parent.
            Controls["flowlayoutpanel"].Controls[criteriaLabel].
            Text = criteriaLabel
            + args.Column.AutoSizeMode.ToString();
    }
    #endregion

    [STAThreadAttribute()]
    public static void Main()
    {
        Application.Run(new DataGridViewColumnDemo());
    }
}

Comentarios

La DataGridViewColumn clase representa una columna lógica en un DataGridView control . Puede recuperar columnas a través de la Columns colección del control .

A diferencia de , DataGridViewRowque contiene la colección real de celdas de , DataGridViewDataGridViewColumn se usa principalmente para ajustar la apariencia y el comportamiento de la interfaz de usuario de columna (UI), como el ancho de columna y el estilo de celda. Para obtener más información sobre los estilos de celda, consulte Estilos de celda en el control DataGridView de formularios Windows Forms.

Los tipos que derivan de DataGridViewColumn normalmente inicializan la CellTemplate propiedad en una nueva instancia de un tipo relacionado derivado de la DataGridViewCell clase . Las propiedades de columna relacionadas con la apariencia o el comportamiento de las celdas individuales son contenedores para las propiedades correspondientes de la celda de plantilla. Cambiar una de estas propiedades en la columna cambia automáticamente el valor de la plantilla de celda y en todas las celdas de la columna. Para invalidar el valor especificado para celdas individuales, establezca los valores de celda después de establecer el valor de columna.

Notas a los desarrolladores de herederos

Cuando derive de DataGridViewColumn y agregue nuevas propiedades a la clase derivada, asegúrese de invalidar el Clone() método para copiar las nuevas propiedades durante las operaciones de clonación. También debe llamar al método de Clone() la clase base para que las propiedades de la clase base se copien en la nueva celda.

Constructores

DataGridViewColumn()

Inicializa una nueva instancia de la clase DataGridViewColumn con el estado predeterminado.

DataGridViewColumn(DataGridViewCell)

Inicializa una nueva instancia de la clase DataGridViewColumn utilizando como plantilla un control DataGridViewCell existente.

Propiedades

AutoSizeMode

Obtiene o establece el modo mediante el cual la columna ajusta automáticamente su tamaño.

CellTemplate

Obtiene o establece la plantilla utilizada para crear nuevas celdas.

CellType

Obtiene el tipo en tiempo de ejecución de la plantilla de celda.

ContextMenuStrip

Obtiene o establece el menú contextual para la columna.

DataGridView

Obtiene el control DataGridView asociado a este elemento.

(Heredado de DataGridViewElement)
DataPropertyName

Obtiene o establece el nombre de la columna de base de datos o la propiedad del origen de datos a la que se enlaza DataGridViewColumn.

DefaultCellStyle

Obtiene o establece el estilo predeterminado de celda de la columna.

DefaultHeaderCellType

Obtiene o establece el tipo de la celda de encabezado predeterminada en tiempo de ejecución.

(Heredado de DataGridViewBand)
Displayed

Obtiene un valor que indica si la banda se muestra actualmente en la pantalla.

(Heredado de DataGridViewBand)
DisplayIndex

Obtiene o establece el orden de presentación de la columna respecto de las columnas actualmente mostradas.

DividerWidth

Obtiene o establece el ancho, en píxeles, del divisor de columna.

FillWeight

Obtiene o establece un valor que representa el ancho de la columna cuando se encuentra en modo de relleno, respecto del ancho de las demás columnas del control que estén en modo de relleno.

Frozen

Obtiene o establece un valor que indica si la columna se va a mover cuando el usuario se desplace horizontalmente por el control DataGridView.

HasDefaultCellStyle

Obtiene un valor que indica si se ha establecido la propiedad DefaultCellStyle.

(Heredado de DataGridViewBand)
HeaderCell

Obtiene o establece el objeto DataGridViewColumnHeaderCell que representa el encabezado de columna.

HeaderCellCore

Obtiene o establece la celda de encabezado de DataGridViewBand.

(Heredado de DataGridViewBand)
HeaderText

Obtiene o establece el texto de título en la celda de encabezado de columna.

Index

Obtiene la posición relativa de la banda dentro del control DataGridView.

(Heredado de DataGridViewBand)
InheritedAutoSizeMode

Obtiene el modo de ajuste de tamaño en vigor para la columna.

InheritedStyle

Obtiene el estilo de celda aplicado actualmente a la columna.

IsDataBound

Obtiene un valor que indica si la columna está enlazada a un origen de datos.

IsRow

Obtiene un valor que indica si la banda representa una fila.

(Heredado de DataGridViewBand)
MinimumWidth

Obtiene o establece el ancho mínimo, en píxeles, de la columna.

Name

Obtiene o establece el nombre de la columna.

ReadOnly

Obtiene o establece un valor que indica si el usuario puede editar las celdas de la columna.

Resizable

Obtiene o establece un valor que indica si se puede cambiar el tamaño de la columna.

Selected

Obtiene o establece un valor que indica si la banda está en un estado seleccionado de la interfaz de usuario (UI).

(Heredado de DataGridViewBand)
Site

Obtiene o establece el sitio de la columna.

SortMode

Obtiene o establece el modo de ordenación de la columna.

State

Obtiene el estado de la interfaz de usuario del elemento.

(Heredado de DataGridViewElement)
Tag

Obtiene o establece el objeto que contiene datos para asociar a la banda.

(Heredado de DataGridViewBand)
ToolTipText

Obtiene o establece el texto que se utiliza como información sobre herramientas.

ValueType

Obtiene o establece el tipo de datos de los valores de las celdas de la columna.

Visible

Obtiene o establece un valor que indica si la columna está visible.

Width

Obtiene o establece el ancho actual de la columna.

Métodos

Clone()

Crea una copia exacta de esta banda.

Dispose()

Libera todos los recursos que usa DataGridViewBand.

(Heredado de DataGridViewBand)
Dispose(Boolean)

Libera los recursos no administrados que usa DataGridViewBand y, de forma opcional, libera los recursos administrados.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

Calcula el ancho ideal de la columna basándose en los criterios especificados.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnDataGridViewChanged()

Se llama cuando la banda está asociada a un DataGridView diferente.

(Heredado de DataGridViewBand)
RaiseCellClick(DataGridViewCellEventArgs)

Genera el evento CellClick.

(Heredado de DataGridViewElement)
RaiseCellContentClick(DataGridViewCellEventArgs)

Genera el evento CellContentClick.

(Heredado de DataGridViewElement)
RaiseCellContentDoubleClick(DataGridViewCellEventArgs)

Genera el evento CellContentDoubleClick.

(Heredado de DataGridViewElement)
RaiseCellValueChanged(DataGridViewCellEventArgs)

Genera el evento CellValueChanged.

(Heredado de DataGridViewElement)
RaiseDataError(DataGridViewDataErrorEventArgs)

Genera el evento DataError.

(Heredado de DataGridViewElement)
RaiseMouseWheel(MouseEventArgs)

Genera el evento MouseWheel.

(Heredado de DataGridViewElement)
ToString()

Obtiene una cadena que describe la columna.

Eventos

Disposed

Se produce cuando se desecha DataGridViewColumn.

Se aplica a

Producto Versiones
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Consulte también