Auf Englisch lesen

Freigeben über


DataGridViewColumn Klasse

Definition

Stellt eine Spalte in einem DataGridView-Steuerelement dar.

[System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.DataGridViewColumnConverter))]
public class DataGridViewColumn : System.Windows.Forms.DataGridViewBand, IDisposable, System.ComponentModel.IComponent
Vererbung
Abgeleitet
Attribute
Implementiert

Beispiele

Im folgenden Codebeispiel wird ein Windows Form-Formular mit einer DataGridView und einer Reihe von Schaltflächen erstellt. Jede Schaltflächenbezeichnung beschreibt einen Vorgang im Zusammenhang mit einer DataGridViewColumn Eigenschaft, z. B. das Austauschen der ersten und letzten Spalte (mithilfe der DisplayIndex -Eigenschaft) oder das Ändern des Texts einer Spaltenüberschrift (mithilfe der HeaderText -Eigenschaft). Durch Klicken auf eine Schaltfläche wird die zugeordnete Eigenschaft von DataGridViewColumngeändert.

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

Hinweise

Die DataGridViewColumn -Klasse stellt eine logische Spalte in einem Steuerelement dar DataGridView . Sie können Spalten über die Columns Auflistung des Steuerelements abrufen.

Im Gegensatz zu einem DataGridViewRow, das die tatsächliche Auflistung von Zellen in einem DataGridViewenthält, DataGridViewColumn wird hauptsächlich verwendet, um die Darstellung und das Verhalten der Spaltenbenutzeroberfläche (UI) anzupassen, z. B. die Spaltenbreite und das Zellenformat. Weitere Informationen zu Zellenstilen finden Sie unter Zellenstile im DataGridView-Steuerelement in Windows Forms.

Typen, die von DataGridViewColumn der -Eigenschaft abgeleitet werden, initialisieren in der CellTemplate Regel eine neue instance eines verknüpften Typs, der von der DataGridViewCell -Klasse abgeleitet wird. Alle Spalteneigenschaften, die sich auf die Darstellung oder das Verhalten einzelner Zellen beziehen, sind Wrapper für die entsprechenden Eigenschaften der Vorlagenzelle. Wenn Sie eine dieser Eigenschaften für die Spalte ändern, wird der Wert für die Zellenvorlage und für alle Zellen in der Spalte automatisch geändert. Um den angegebenen Wert für einzelne Zellen zu überschreiben, legen Sie die Zellwerte fest, nachdem Sie den Spaltenwert festgelegt haben.

Hinweise für Vererber

Wenn Sie von DataGridViewColumn der abgeleiteten Klasse abgeleitet und der abgeleiteten Klasse neue Eigenschaften hinzufügen, müssen Sie die Clone() -Methode überschreiben, um die neuen Eigenschaften während Klonvorgängen zu kopieren. Sie sollten auch die Methode der Basisklasse Clone() aufrufen, damit die Eigenschaften der Basisklasse in die neue Zelle kopiert werden.

Konstruktoren

DataGridViewColumn()

Initialisiert eine neue Instanz der DataGridViewColumn-Klasse im Standardzustand.

DataGridViewColumn(DataGridViewCell)

Initialisiert eine neue Instanz der DataGridViewColumn-Klasse mit einer vorhandenen DataGridViewCell als Vorlage.

Eigenschaften

AutoSizeMode

Ruft den Modus ab, in dem die Spalte automatisch ihre Breite anpasst, oder legt diesen Modus fest.

CellTemplate

Ruft die zum Erstellen neuer Zellen verwendete Vorlage ab oder legt diese fest.

CellType

Ruft den Laufzeittyp der Zellvorlage ab.

ContextMenuStrip

Ruft das Kontextmenü für die Spalte ab oder legt dieses fest.

DataGridView

Ruft das diesem Element zugeordnete DataGridView-Steuerelement ab.

(Geerbt von DataGridViewElement)
DataPropertyName

Ruft den Namen der Datenquelleneigenschaft oder Datenbankspalte ab, an die DataGridViewColumn gebunden ist, oder legt diesen Namen fest.

DefaultCellStyle

Ruft das Standardzellenformat der Spalte ab oder legt dieses fest.

DefaultHeaderCellType

Ruft den Laufzeittyp der Standardheaderzelle ab oder legt diesen fest.

(Geerbt von DataGridViewBand)
Displayed

Ruft einen Wert ab, der angibt, ob das Band gegenwärtig auf dem Bildschirm angezeigt wird.

(Geerbt von DataGridViewBand)
DisplayIndex

Ruft die Anzeigereihenfolge der Spalte relativ zu den derzeit angezeigten Spalten ab oder legt sie fest.

DividerWidth

Ruft die Breite des Spaltenunterteilers in Pixel ab oder legt sie fest.

FillWeight

Ruft einen Wert ab, der die Breite der Spalte im Füllmodus relativ zur Breite anderer im Steuerelement vorhandener Spalten im Füllmodus darstellt, oder legt diesen Wert fest.

Frozen

Ruft einen Wert ab, der angibt, ob eine Spalte verschoben wird, wenn ein Benutzer einen horizontalen Bildlauf durch das DataGridView-Steuerelement durchführt, oder legt diesen Wert fest.

HasDefaultCellStyle

Ruft einen Wert ab, der angibt, ob die DefaultCellStyle-Eigenschaft festgelegt wurde.

(Geerbt von DataGridViewBand)
HeaderCell

Ruft die DataGridViewColumnHeaderCell ab, die den Spaltenheader darstellt, oder legt sie fest.

HeaderCellCore

Ruft die Headerzelle von DataGridViewBand ab oder legt diese fest.

(Geerbt von DataGridViewBand)
HeaderText

Ruft den Beschriftungstext für die Headerzelle der Spalte ab oder legt ihn fest.

Index

Ruft die relative Position des Bands im DataGridView-Steuerelement ab.

(Geerbt von DataGridViewBand)
InheritedAutoSizeMode

Ruft den für die Spalte gültigen Modus zum Festlegen der Größe ab.

InheritedStyle

Ruft den Zellstil ab, der gegenwärtig auf die Spalte angewendet wird.

IsDataBound

Ruft einen Wert ab, der angibt, ob die Spalte an eine Datenquelle gebunden ist.

IsRow

Ruft einen Wert ab, der angibt, ob das Band eine Zeile darstellt.

(Geerbt von DataGridViewBand)
MinimumWidth

Ruft die minimale Breite der Spalte in Pixel ab oder legt sie fest.

Name

Ruft den Namen der Spalte ab oder legt ihn fest.

ReadOnly

Ruft einen Wert ab, der angibt, ob der Benutzer die Zellen der Spalte bearbeiten kann, oder legt diesen Wert fest.

Resizable

Ruft einen Wert ab, der angibt, ob die Größe der Spalte geändert werden kann, oder legt diesen fest.

Selected

Ruft einen Wert ab, der angibt, ob sich das Band in einem ausgewählten Benutzeroberflächenzustand befindet, oder legt diesen Wert fest.

(Geerbt von DataGridViewBand)
Site

Ruft die Site der Spalte ab oder legt sie fest.

SortMode

Ruft den Sortiermodus für die Spalte ab oder legt diesen fest.

State

Ruft den Benutzeroberflächenzustand des Elements ab.

(Geerbt von DataGridViewElement)
Tag

Ruft das Objekt ab, das dem Band zuzuordnende Daten enthält, oder legt dieses fest.

(Geerbt von DataGridViewBand)
ToolTipText

Ruft den für QuickInfos verwendeten Text ab oder legt diesen fest.

ValueType

Ruft den Datentyp der Werte in den Zellen der Spalte ab oder legt ihn fest.

Visible

Ruft einen Wert ab, der angibt, ob die Spalte sichtbar ist, oder legt ihn fest.

Width

Ruft die aktuelle Breite der Spalte ab oder legt sie fest.

Methoden

Clone()

Erstellt eine genaue Kopie dieser Zelle.

Dispose()

Gibt alle vom DataGridViewBand verwendeten Ressourcen frei.

(Geerbt von DataGridViewBand)
Dispose(Boolean)

Gibt die von DataGridViewBand verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

Berechnet die ideale Breite der Spalte auf der Grundlage der angegebenen Kriterien.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnDataGridViewChanged()

Wird aufgerufen, wenn das Band einer anderen DataGridView zugeordnet wird.

(Geerbt von DataGridViewBand)
RaiseCellClick(DataGridViewCellEventArgs)

Löst das CellClick-Ereignis aus.

(Geerbt von DataGridViewElement)
RaiseCellContentClick(DataGridViewCellEventArgs)

Löst das CellContentClick-Ereignis aus.

(Geerbt von DataGridViewElement)
RaiseCellContentDoubleClick(DataGridViewCellEventArgs)

Löst das CellContentDoubleClick-Ereignis aus.

(Geerbt von DataGridViewElement)
RaiseCellValueChanged(DataGridViewCellEventArgs)

Löst das CellValueChanged-Ereignis aus.

(Geerbt von DataGridViewElement)
RaiseDataError(DataGridViewDataErrorEventArgs)

Löst das DataError-Ereignis aus.

(Geerbt von DataGridViewElement)
RaiseMouseWheel(MouseEventArgs)

Löst das MouseWheel-Ereignis aus.

(Geerbt von DataGridViewElement)
ToString()

Ruft eine Zeichenfolge ab, die die Spalte beschreibt.

Ereignisse

Disposed

Tritt ein, wenn die DataGridViewColumn freigegeben ist.

Gilt für:

Produkt Versionen
.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

Weitere Informationen