DataGridViewColumn Class
TOC
Collapse the table of content
Expand the table of content

DataGridViewColumn Class

 

Represents a column in a DataGridView control.

Namespace:   System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)


Public Class DataGridViewColumn
	Inherits DataGridViewBand
	Implements IComponent, IDisposable

NameDescription
System_CAPS_pubmethodDataGridViewColumn()

Initializes a new instance of the DataGridViewColumn class to the default state.

System_CAPS_pubmethodDataGridViewColumn(DataGridViewCell)

Initializes a new instance of the DataGridViewColumn class using an existing DataGridViewCell as a template.

NameDescription
System_CAPS_pubpropertyAutoSizeMode

Gets or sets the mode by which the column automatically adjusts its width.

System_CAPS_pubpropertyCellTemplate

Gets or sets the template used to create new cells.

System_CAPS_pubpropertyCellType

Gets the run-time type of the cell template.

System_CAPS_pubpropertyContextMenuStrip

Gets or sets the shortcut menu for the column.(Overrides DataGridViewBand.ContextMenuStrip.)

System_CAPS_pubpropertyDataGridView

Gets the DataGridView control associated with this element.(Inherited from DataGridViewElement.)

System_CAPS_pubpropertyDataPropertyName

Gets or sets the name of the data source property or database column to which the DataGridViewColumn is bound.

System_CAPS_pubpropertyDefaultCellStyle

Gets or sets the column's default cell style.(Overrides DataGridViewBand.DefaultCellStyle.)

System_CAPS_pubpropertyDefaultHeaderCellType

Gets or sets the run-time type of the default header cell.(Inherited from DataGridViewBand.)

System_CAPS_pubpropertyDisplayed

Gets a value indicating whether the band is currently displayed onscreen. (Inherited from DataGridViewBand.)

System_CAPS_pubpropertyDisplayIndex

Gets or sets the display order of the column relative to the currently displayed columns.

System_CAPS_pubpropertyDividerWidth

Gets or sets the width, in pixels, of the column divider.

System_CAPS_pubpropertyFillWeight

Gets or sets a value that represents the width of the column when it is in fill mode relative to the widths of other fill-mode columns in the control.

System_CAPS_pubpropertyFrozen

Gets or sets a value indicating whether a column will move when a user scrolls the DataGridView control horizontally.(Overrides DataGridViewBand.Frozen.)

System_CAPS_pubpropertyHasDefaultCellStyle

Gets a value indicating whether the DefaultCellStyle property has been set. (Inherited from DataGridViewBand.)

System_CAPS_pubpropertyHeaderCell

Gets or sets the DataGridViewColumnHeaderCell that represents the column header.

System_CAPS_protpropertyHeaderCellCore

Gets or sets the header cell of the DataGridViewBand.(Inherited from DataGridViewBand.)

System_CAPS_pubpropertyHeaderText

Gets or sets the caption text on the column's header cell.

System_CAPS_pubpropertyIndex

Gets the relative position of the band within the DataGridView control.(Inherited from DataGridViewBand.)

System_CAPS_pubpropertyInheritedAutoSizeMode

Gets the sizing mode in effect for the column.

System_CAPS_pubpropertyInheritedStyle

Gets the cell style currently applied to the column.(Overrides DataGridViewBand.InheritedStyle.)

System_CAPS_pubpropertyIsDataBound

Gets a value indicating whether the column is bound to a data source.

System_CAPS_protpropertyIsRow

Gets a value indicating whether the band represents a row.(Inherited from DataGridViewBand.)

System_CAPS_pubpropertyMinimumWidth

Gets or sets the minimum width, in pixels, of the column.

System_CAPS_pubpropertyName

Gets or sets the name of the column.

System_CAPS_pubpropertyReadOnly

Gets or sets a value indicating whether the user can edit the column's cells.(Overrides DataGridViewBand.ReadOnly.)

System_CAPS_pubpropertyResizable

Gets or sets a value indicating whether the column is resizable.(Overrides DataGridViewBand.Resizable.)

System_CAPS_pubpropertySelected

Gets or sets a value indicating whether the band is in a selected user interface (UI) state.(Inherited from DataGridViewBand.)

System_CAPS_pubpropertySite

This API supports the product infrastructure and is not intended to be used directly from your code. Gets or sets the site of the column.

System_CAPS_pubpropertySortMode

Gets or sets the sort mode for the column.

System_CAPS_pubpropertyState

Gets the user interface (UI) state of the element.(Inherited from DataGridViewElement.)

System_CAPS_pubpropertyTag

Gets or sets the object that contains data to associate with the band.(Inherited from DataGridViewBand.)

System_CAPS_pubpropertyToolTipText

Gets or sets the text used for ToolTips.

System_CAPS_pubpropertyValueType

Gets or sets the data type of the values in the column's cells.

System_CAPS_pubpropertyVisible

Gets or sets a value indicating whether the column is visible.(Overrides DataGridViewBand.Visible.)

System_CAPS_pubpropertyWidth

Gets or sets the current width of the column.

NameDescription
System_CAPS_pubmethodClone()

Creates an exact copy of this band.(Overrides DataGridViewBand.Clone().)

System_CAPS_pubmethodDispose()

Releases all resources used by the DataGridViewBand. (Inherited from DataGridViewBand.)

System_CAPS_protmethodDispose(Boolean)

Releases the unmanaged resources used by the DataGridViewBand and optionally releases the managed resources.(Overrides DataGridViewBand.Dispose(Boolean).)

System_CAPS_pubmethodEquals(Object)

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_protmethodFinalize()

Releases the resources associated with the band.(Inherited from DataGridViewBand.)

System_CAPS_pubmethodGetHashCode()

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethodGetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

Calculates the ideal width of the column based on the specified criteria.

System_CAPS_pubmethodGetType()

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_protmethodMemberwiseClone()

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_protmethodOnDataGridViewChanged()

Called when the band is associated with a different DataGridView.(Inherited from DataGridViewBand.)

System_CAPS_protmethodRaiseCellClick(DataGridViewCellEventArgs)

Raises the DataGridView.CellClick event. (Inherited from DataGridViewElement.)

System_CAPS_protmethodRaiseCellContentClick(DataGridViewCellEventArgs)

Raises the DataGridView.CellContentClick event. (Inherited from DataGridViewElement.)

System_CAPS_protmethodRaiseCellContentDoubleClick(DataGridViewCellEventArgs)

Raises the DataGridView.CellContentDoubleClick event. (Inherited from DataGridViewElement.)

System_CAPS_protmethodRaiseCellValueChanged(DataGridViewCellEventArgs)

Raises the DataGridView.CellValueChanged event. (Inherited from DataGridViewElement.)

System_CAPS_protmethodRaiseDataError(DataGridViewDataErrorEventArgs)

Raises the DataGridView.DataError event. (Inherited from DataGridViewElement.)

System_CAPS_protmethodRaiseMouseWheel(MouseEventArgs)

Raises the Control.MouseWheel event. (Inherited from DataGridViewElement.)

System_CAPS_pubmethodToString()

Gets a string that describes the column.(Overrides DataGridViewBand.ToString().)

NameDescription
System_CAPS_pubeventDisposed

Occurs when the DataGridViewColumn is disposed.

The DataGridViewColumn class represents a logical column in a DataGridView control. You can retrieve columns through the Columns collection of the control.

Unlike a DataGridViewRow, which contains the actual collection of cells in a DataGridView, DataGridViewColumn is used mainly to adjust the appearance and behavior of the column user interface (UI), such as column width and cell style. For more information about cell styles, see Cell Styles in the Windows Forms DataGridView Control.

Types that derive from DataGridViewColumn typically initialize the CellTemplate property to a new instance of a related type derived from the DataGridViewCell class. Any column properties that relate to the appearance or behavior of individual cells are wrappers for the corresponding properties of the template cell. Changing one of these properties on the column automatically changes the value on the cell template and on all cells in the column. To override the specified value for individual cells, set the cell values after you set the column value.

Notes to Inheritors:

When you derive from DataGridViewColumn and add new properties to the derived class, be sure to override the Clone method to copy the new properties during cloning operations. You should also call the base class's Clone method so that the properties of the base class are copied to the new cell.

The following code example creates a Windows Form with a DataGridView and a set of buttons. Each button label describes an operation related to a DataGridViewColumn property, such as swapping the first and last column (using the DisplayIndex property) or changing the text of a column header (using the HeaderText property). Clicking a button changes the associated property of the DataGridViewColumn.

Imports System.Windows.Forms
Imports System.Drawing

Public Class DataGridViewColumnDemo
    Inherits Form

#Region "set up form"
    Public Sub New()
        InitializeComponent()

        AddButton(Button1, "Reset")
        AddButton(Button2, "Change Column 3 Header")
        AddButton(Button3, "Change Meatloaf Recipe")
        AddAdditionalButtons()
    End Sub

    Friend WithEvents dataGridView As DataGridView
    Friend WithEvents Button1 As Button = New Button()
    Friend WithEvents Button2 As Button = New Button()
    Friend WithEvents Button3 As Button = New Button()
    Friend WithEvents Button4 As Button = New Button()
    Friend WithEvents Button5 As Button = New Button()
    Friend WithEvents Button6 As Button = New Button()
    Friend WithEvents Button7 As Button = New Button()
    Friend WithEvents Button8 As Button = New Button()
    Friend WithEvents Button9 As Button = New Button()
    Friend WithEvents Button10 As Button = New Button()
    Friend WithEvents FlowLayoutPanel1 As FlowLayoutPanel _
        = New FlowLayoutPanel()

    Private Sub 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(FlowLayoutPanel1)
        Text = Me.GetType.Name
        AutoSize = True
    End Sub
#End Region

#Region "set up DataGridView"
    Private thirdColumnHeader As String = "Main Ingredients"
    Private boringMeatloaf As String = "ground beef"
    Private boringMeatloafRanking As String = "*"
    Private boringRecipe As Boolean
    Private shortMode As Boolean

    Private Sub InitializeDataGridView(ByVal ignored As Object, _
    ByVal ignoredToo As EventArgs) Handles Me.Load

        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.
        Dim columnHeaderStyle As 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.
        Dim row1 As String() = New String() _
            {"Meatloaf", "Main Dish", boringMeatloaf, _
            boringMeatloafRanking}
        Dim row2 As String() = New String() _
            {"Key Lime Pie", "Dessert", _
            "lime juice, evaporated milk", _
            "****"}
        Dim row3 As String() = New String() _
            {"Orange-Salsa Pork Chops", "Main Dish", _
            "pork chops, salsa, orange juice", "****"}
        Dim row4 As String() = New String() _
            {"Black Bean and Rice Salad", "Salad", _
            "black beans, brown rice", _
            "****"}
        Dim row5 As String() = New String() _
            {"Chocolate Cheesecake", "Dessert", "cream cheese", _
            "***"}
        Dim row6 As String() = New String() _
            {"Black Bean Dip", "Appetizer", _
            "black beans, sour cream", _
                "***"}
        Dim rows As Object() = New Object() {row1, row2, _
            row3, row4, row5, row6}

        Dim rowArray As String()
        For Each rowArray In rows
            dataGridView.Rows.Add(rowArray)
        Next

        shortMode = False
        boringRecipe = True
    End Sub

    Private Sub AddButton(ByVal button As Button, _
        ByVal buttonLabel As String)

        FlowLayoutPanel1.Controls.Add(button)
        button.TabIndex = FlowLayoutPanel1.Controls.Count
        button.Text = buttonLabel
        button.AutoSize = True
    End Sub

    Private Sub ResetToDisorder(ByVal sender As Object, _
        ByVal e As System.EventArgs) _
        Handles Button1.Click
        Controls.Remove(dataGridview)
        dataGridView.Dispose()
        InitializeDataGridView(Nothing, Nothing)
    End Sub

    Private Sub ChangeColumn3Header(ByVal sender As Object, _
        ByVal e As System.EventArgs) _
        Handles Button2.Click

        Toggle(shortMode)
        If shortMode Then dataGridView.Columns(2).HeaderText = _
            "S" _
            Else dataGridView.Columns(2).HeaderText = _
                thirdColumnHeader
    End Sub

    Private Shared Sub Toggle(ByRef toggleThis As Boolean)
        toggleThis = Not toggleThis
    End Sub

    Private Sub ChangeMeatloafRecipe(ByVal sender As Object, _
        ByVal e As System.EventArgs) _
        Handles Button3.Click

        Toggle(boringRecipe)
        If boringRecipe Then
            SetMeatloaf(boringMeatloaf, boringMeatloafRanking)
        Else
            Dim greatMeatloafRecipe As String = "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, "***")
        End If
    End Sub

    Private Sub SetMeatloaf(ByVal recipe As String, _
        ByVal rating As String)

        dataGridView.Rows(0).Cells(2).Value = recipe
        dataGridView.Rows(0).Cells(3).Value = rating
    End Sub
#End Region

#Region "demonstration code"
    Private Sub PostColumnCreation()
        AddContextLabel()
        AddCriteriaLabel()
        CustomizeCellsInThirdColumn()
        AddContextMenu()
        SetDefaultCellInFirstColumn()
        ToolTips()
    End Sub

    Private criteriaLabel As String = "Column 3 sizing criteria: "
    Private Sub AddCriteriaLabel()
        AddLabelToPanelIfNotAlreadyThere(criteriaLabel, _
            criteriaLabel & _
            dataGridView.Columns(2).AutoSizeMode.ToString() _
            & ".")
    End Sub

    Private Sub AddContextLabel()
        Dim labelName As String = "label"
        AddLabelToPanelIfNotAlreadyThere(labelName, _
            "Use shortcut menu to change cell color.")
    End Sub

    Private Sub AddLabelToPanelIfNotAlreadyThere( _
    ByVal labelName As String, _
    ByVal labelText As String)

        Dim label As Label
        If FlowLayoutPanel1.Controls(labelName) Is Nothing Then
            label = New Label()
            label.AutoSize = True
            label.Name = labelName
            label.BackColor = Color.Bisque
            FlowLayoutPanel1.Controls.Add(label)
        Else
            label = CType(FlowLayoutPanel1.Controls(labelName), Label)
        End If
        label.Text = labelText
    End Sub

    Private Sub CustomizeCellsInThirdColumn()

        Dim thirdColumn As Integer = 2
        Dim column As DataGridViewColumn = _
            dataGridView.Columns(thirdColumn)
        Dim cell As DataGridViewCell = _
            New DataGridViewTextBoxCell()

        cell.Style.BackColor = Color.Wheat
        column.CellTemplate = cell
    End Sub

    WithEvents toolStripItem1 As New ToolStripMenuItem()

    Private Sub AddContextMenu()
        toolStripItem1.Text = "Redden"
        Dim strip As New ContextMenuStrip()
        For Each column As DataGridViewColumn _
            In dataGridView.Columns()

            column.ContextMenuStrip = strip
            column.ContextMenuStrip.Items.Add(toolStripItem1)
        Next
    End Sub
    ' Change the cell's color.
    Private Sub toolStripItem1_Click(ByVal sender As Object, _
        ByVal args As EventArgs) _
        Handles toolStripItem1.Click

        dataGridView.Rows(mouseLocation.RowIndex) _
            .Cells(mouseLocation.ColumnIndex) _
            .Style.BackColor = Color.Red
    End Sub

    Private mouseLocation As DataGridViewCellEventArgs

    ' Deal with hovering over a cell.
    Private Sub dataGridView_CellMouseEnter(ByVal sender As Object, _
        ByVal location As DataGridViewCellEventArgs) _
        Handles DataGridView.CellMouseEnter

        mouseLocation = location
    End Sub

    Private Sub SetDefaultCellInFirstColumn()
        Dim firstColumn As DataGridViewColumn = _
            dataGridView.Columns(0)
        Dim cellStyle As DataGridViewCellStyle = _
            New DataGridViewCellStyle()
        cellStyle.BackColor = Color.Thistle

        firstColumn.DefaultCellStyle = cellStyle
    End Sub

    Private Sub ToolTips()
        Dim firstColumn As DataGridViewColumn = _
            dataGridView.Columns(0)
        Dim thirdColumn As DataGridViewColumn = _
            dataGridView.Columns(2)
        firstColumn.ToolTipText = _
            "This is column uses a default cell."
        thirdColumn.ToolTipText = _
            "This is column uses a template cell." _
            & " Changes to one cell's style changes them all."
    End Sub

    Private Sub AddAdditionalButtons()
        AddButton(Button4, "Set Minimum Width of Column Two")
        AddButton(Button5, "Set Width of Column One")
        AddButton(Button6, "Autosize Third Column")
        AddButton(Button7, "Add Thick Vertical Edge")
        AddButton(Button8, "Style and Number Columns")
        AddButton(Button9, "Change Column Header Text")
        AddButton(Button10, "Swap First and Last Columns")
    End Sub

    Private Sub AdjustDataGridViewSizing()
        dataGridView.ColumnHeadersHeightSizeMode = _
            DataGridViewColumnHeadersHeightSizeMode.AutoSize
    End Sub

    'Set the minimum width.
    Private Sub Button4_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Button4.Click

        Dim column As DataGridViewColumn = dataGridView.Columns(1)
        column.MinimumWidth = 40
    End Sub

    ' Set the width.
    Private Sub Button5_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Button5.Click

        Dim column As DataGridViewColumn = dataGridView.Columns(0)
        column.Width = 60
    End Sub

    ' AutoSize the third column.
    Private Sub Button6_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Button6.Click

        Dim column As DataGridViewColumn = dataGridView.Columns(2)
        column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
    End Sub

    ' Set the vertical edge.
    Private Sub Button7_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Button7.Click

        Dim thirdColumn As Integer = 2
        Dim column As DataGridViewColumn = _
            dataGridView.Columns(thirdColumn)
        column.DividerWidth = 10

    End Sub

    ' Style and number columns.
    Private Sub Button8_Click(ByVal sender As Object, _
        ByVal args As EventArgs) Handles Button8.Click

        Dim style As DataGridViewCellStyle = _
            New DataGridViewCellStyle()
        style.Alignment = _
            DataGridViewContentAlignment.MiddleCenter
        style.ForeColor = Color.IndianRed
        style.BackColor = Color.Ivory

        For Each column As DataGridViewColumn _
            In dataGridView.Columns

            column.HeaderCell.Value = _
                column.Index.ToString
            column.HeaderCell.Style = style
        Next
    End Sub

    ' Change the text in the column header.
    Private Sub Button9_Click(ByVal sender As Object, _
        ByVal args As EventArgs) Handles Button9.Click

        For Each column As DataGridViewColumn _
            In dataGridView.Columns

            column.HeaderText = String.Concat("Column ", _
                column.Index.ToString)
        Next
    End Sub

    ' Swap the last column with the first.
    Private Sub Button10_Click(ByVal sender As Object, _
        ByVal args As EventArgs) Handles Button10.Click

        Dim columnCollection As DataGridViewColumnCollection = _
            dataGridView.Columns

        Dim firstVisibleColumn As DataGridViewColumn = _
            columnCollection.GetFirstColumn(DataGridViewElementStates.Visible)
        Dim lastVisibleColumn As DataGridViewColumn = _
            columnCollection.GetLastColumn(DataGridViewElementStates.Visible, _
            Nothing)

        Dim firstColumn_sIndex As Integer = firstVisibleColumn.DisplayIndex
        firstVisibleColumn.DisplayIndex = _
            lastVisibleColumn.DisplayIndex
        lastVisibleColumn.DisplayIndex = firstColumn_sIndex
    End Sub

    ' Updated the criteria label.
    Private Sub dataGridView_AutoSizeColumnCriteriaChanged( _
        ByVal sender As Object, _
        ByVal args As DataGridViewAutoSizeColumnModeEventArgs) _
        Handles DataGridView.AutoSizeColumnModeChanged

        args.Column.DataGridView.Parent. _
        Controls("flowlayoutpanel"). _
        Controls(criteriaLabel).Text = _
            criteriaLabel & args.Column.AutoSizeMode.ToString
    End Sub
#End Region

    <STAThreadAttribute()> _
    Public Shared Sub Main()
        Application.Run(New DataGridViewColumnDemo())
    End Sub

End Class

.NET Framework
Available since 2.0

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show:
© 2016 Microsoft