Export (0) Print
Expand All

DataGridViewButtonCell Class

Displays a button-like user interface (UI) for use in a DataGridView control.

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

public class DataGridViewButtonCell : DataGridViewCell

The DataGridViewButtonCell type exposes the following members.

  NameDescription
Public methodDataGridViewButtonCellInitializes a new instance of the DataGridViewButtonCell class.
Top

  NameDescription
Public propertyAccessibilityObjectGets the DataGridViewCell.DataGridViewCellAccessibleObject assigned to the DataGridViewCell. (Inherited from DataGridViewCell.)
Public propertyColumnIndexGets the column index for this cell. (Inherited from DataGridViewCell.)
Public propertyContentBoundsGets the bounding rectangle that encloses the cell's content area. (Inherited from DataGridViewCell.)
Public propertyContextMenuStripGets or sets the shortcut menu associated with the cell. (Inherited from DataGridViewCell.)
Public propertyDataGridViewGets the DataGridView control associated with this element. (Inherited from DataGridViewElement.)
Public propertyDefaultNewRowValueGets the default value for a cell in the row for new records. (Inherited from DataGridViewCell.)
Public propertyDisplayedGets a value that indicates whether the cell is currently displayed on-screen. (Inherited from DataGridViewCell.)
Public propertyEditedFormattedValueGets the current, formatted value of the cell, regardless of whether the cell is in edit mode and the value has not been committed. (Inherited from DataGridViewCell.)
Public propertyEditTypeGets the type of the cell's hosted editing control. (Overrides DataGridViewCell.EditType.)
Public propertyErrorIconBoundsGets the bounds of the error icon for the cell. (Inherited from DataGridViewCell.)
Public propertyErrorTextGets or sets the text describing an error condition associated with the cell. (Inherited from DataGridViewCell.)
Public propertyFlatStyleGets or sets the style determining the button's appearance.
Public propertyFormattedValueGets the value of the cell as formatted for display. (Inherited from DataGridViewCell.)
Public propertyFormattedValueTypeGets the type of the formatted value associated with the cell. (Overrides DataGridViewCell.FormattedValueType.)
Public propertyFrozenGets a value indicating whether the cell is frozen. (Inherited from DataGridViewCell.)
Public propertyHasStyleGets a value indicating whether the Style property has been set. (Inherited from DataGridViewCell.)
Public propertyInheritedStateGets the current state of the cell as inherited from the state of its row and column. (Inherited from DataGridViewCell.)
Public propertyInheritedStyleGets the style currently applied to the cell. (Inherited from DataGridViewCell.)
Public propertyIsInEditModeGets a value indicating whether this cell is currently being edited. (Inherited from DataGridViewCell.)
Public propertyOwningColumnGets the column that contains this cell. (Inherited from DataGridViewCell.)
Public propertyOwningRowGets the row that contains this cell. (Inherited from DataGridViewCell.)
Public propertyPreferredSizeGets the size, in pixels, of a rectangular area into which the cell can fit. (Inherited from DataGridViewCell.)
Public propertyReadOnlyGets or sets a value indicating whether the cell's data can be edited. (Inherited from DataGridViewCell.)
Public propertyResizableGets a value indicating whether the cell can be resized. (Inherited from DataGridViewCell.)
Public propertyRowIndexGets the index of the cell's parent row. (Inherited from DataGridViewCell.)
Public propertySelectedGets or sets a value indicating whether the cell has been selected. (Inherited from DataGridViewCell.)
Public propertySizeGets the size of the cell. (Inherited from DataGridViewCell.)
Public propertyStateGets the user interface (UI) state of the element. (Inherited from DataGridViewElement.)
Public propertyStyleGets or sets the style for the cell. (Inherited from DataGridViewCell.)
Public propertyTagGets or sets the object that contains supplemental data about the cell. (Inherited from DataGridViewCell.)
Public propertyToolTipTextGets or sets the ToolTip text associated with this cell. (Inherited from DataGridViewCell.)
Public propertyUseColumnTextForButtonValueGets or sets a value indicating whether the owning column's text will appear on the button displayed by the cell.
Public propertyValueGets or sets the value associated with this cell. (Inherited from DataGridViewCell.)
Public propertyValueTypeGets or sets the data type of the values in the cell. (Overrides DataGridViewCell.ValueType.)
Public propertyVisibleGets a value indicating whether the cell is in a row or column that has been hidden. (Inherited from DataGridViewCell.)
Top

  NameDescription
Public methodAdjustCellBorderStyleModifies the input cell border style according to the specified criteria. (Inherited from DataGridViewCell.)
Protected methodBorderWidthsReturns a Rectangle that represents the widths of all the cell margins. (Inherited from DataGridViewCell.)
Protected methodClickUnsharesRowIndicates whether the cell's row will be unshared when the cell is clicked. (Inherited from DataGridViewCell.)
Public methodCloneCreates an exact copy of this cell. (Overrides DataGridViewCell.Clone().)
Protected methodContentClickUnsharesRowIndicates whether the cell's row will be unshared when the cell's content is clicked. (Inherited from DataGridViewCell.)
Protected methodContentDoubleClickUnsharesRowIndicates whether the cell's row will be unshared when the cell's content is double-clicked. (Inherited from DataGridViewCell.)
Protected methodCreateAccessibilityInstanceCreates a new accessible object for the DataGridViewButtonCell. (Overrides DataGridViewCell.CreateAccessibilityInstance().)
Public methodDetachEditingControlRemoves the cell's editing control from the DataGridView. (Inherited from DataGridViewCell.)
Public methodDispose()Releases all resources used by the DataGridViewCell. (Inherited from DataGridViewCell.)
Protected methodDispose(Boolean)Releases the unmanaged resources used by the DataGridViewCell and optionally releases the managed resources. (Inherited from DataGridViewCell.)
Protected methodDoubleClickUnsharesRowIndicates whether the cell's row will be unshared when the cell is double-clicked. (Inherited from DataGridViewCell.)
Protected methodEnterUnsharesRowIndicates whether the parent row will be unshared when the focus moves to the cell. (Inherited from DataGridViewCell.)
Public methodEquals(Object)Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected methodFinalizeReleases the unmanaged resources and performs other cleanup operations before the DataGridViewCell is reclaimed by garbage collection. (Inherited from DataGridViewCell.)
Protected methodGetClipboardContentRetrieves the formatted value of the cell to copy to the Clipboard. (Inherited from DataGridViewCell.)
Public methodGetContentBounds(Int32)Returns the bounding rectangle that encloses the cell's content area using a default Graphics and cell style currently in effect for the cell. (Inherited from DataGridViewCell.)
Protected methodGetContentBounds(Graphics, DataGridViewCellStyle, Int32)Returns the bounding rectangle that encloses the cell's content area, which is calculated using the specified Graphics and cell style. (Overrides DataGridViewCell.GetContentBounds(Graphics, DataGridViewCellStyle, Int32).)
Public methodGetEditedFormattedValueReturns the current, formatted value of the cell, regardless of whether the cell is in edit mode and the value has not been committed. (Inherited from DataGridViewCell.)
Protected methodGetErrorIconBoundsReturns the bounding rectangle that encloses the cell's error icon, if one is displayed. (Overrides DataGridViewCell.GetErrorIconBounds(Graphics, DataGridViewCellStyle, Int32).)
Protected methodGetErrorTextReturns a string that represents the error for the cell. (Inherited from DataGridViewCell.)
Protected methodGetFormattedValueGets the value of the cell as formatted for display. (Inherited from DataGridViewCell.)
Public methodGetHashCodeServes as a hash function for a particular type. (Inherited from Object.)
Public methodGetInheritedContextMenuStripGets the inherited shortcut menu for the current cell. (Inherited from DataGridViewCell.)
Public methodGetInheritedStateReturns a value indicating the current state of the cell as inherited from the state of its row and column. (Inherited from DataGridViewCell.)
Public methodGetInheritedStyleGets the style applied to the cell. (Inherited from DataGridViewCell.)
Protected methodGetPreferredSizeCalculates the preferred size, in pixels, of the cell. (Overrides DataGridViewCell.GetPreferredSize(Graphics, DataGridViewCellStyle, Int32, Size).)
Protected methodGetSizeGets the size of the cell. (Inherited from DataGridViewCell.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodGetValueRetrieves the text associated with the button. (Overrides DataGridViewCell.GetValue(Int32).)
Public methodInitializeEditingControlInitializes the control used to edit the cell. (Inherited from DataGridViewCell.)
Protected methodKeyDownUnsharesRowIndicates whether a row is unshared if a key is pressed while the focus is on a cell in the row. (Overrides DataGridViewCell.KeyDownUnsharesRow(KeyEventArgs, Int32).)
Public methodKeyEntersEditModeDetermines if edit mode should be started based on the given key. (Inherited from DataGridViewCell.)
Protected methodKeyPressUnsharesRowIndicates whether a row will be unshared if a key is pressed while a cell in the row has focus. (Inherited from DataGridViewCell.)
Protected methodKeyUpUnsharesRowIndicates whether a row is unshared when a key is released while the focus is on a cell in the row. (Overrides DataGridViewCell.KeyUpUnsharesRow(KeyEventArgs, Int32).)
Protected methodLeaveUnsharesRowIndicates whether a row will be unshared when the focus leaves a cell in the row. (Inherited from DataGridViewCell.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Protected methodMouseClickUnsharesRowIndicates whether a row will be unshared if the user clicks a mouse button while the pointer is on a cell in the row. (Inherited from DataGridViewCell.)
Protected methodMouseDoubleClickUnsharesRowIndicates whether a row will be unshared if the user double-clicks a cell in the row. (Inherited from DataGridViewCell.)
Protected methodMouseDownUnsharesRowIndicates whether a row will be unshared when the mouse button is held down while the pointer is on a cell in the row. (Overrides DataGridViewCell.MouseDownUnsharesRow(DataGridViewCellMouseEventArgs).)
Protected methodMouseEnterUnsharesRowIndicates whether a row will be unshared when the mouse pointer moves over a cell in the row. (Overrides DataGridViewCell.MouseEnterUnsharesRow(Int32).)
Protected methodMouseLeaveUnsharesRowIndicates whether a row will be unshared when the mouse pointer leaves the row. (Overrides DataGridViewCell.MouseLeaveUnsharesRow(Int32).)
Protected methodMouseMoveUnsharesRowIndicates whether a row will be unshared when the mouse pointer moves over a cell in the row. (Inherited from DataGridViewCell.)
Protected methodMouseUpUnsharesRowIndicates whether a row will be unshared when the mouse button is released while the pointer is on a cell in the row. (Overrides DataGridViewCell.MouseUpUnsharesRow(DataGridViewCellMouseEventArgs).)
Protected methodOnClickCalled when the cell is clicked. (Inherited from DataGridViewCell.)
Protected methodOnContentClickCalled when the cell's contents are clicked. (Inherited from DataGridViewCell.)
Protected methodOnContentDoubleClickCalled when the cell's contents are double-clicked. (Inherited from DataGridViewCell.)
Protected methodOnDataGridViewChangedCalled when the DataGridView property of the cell changes. (Inherited from DataGridViewCell.)
Protected methodOnDoubleClickCalled when the cell is double-clicked. (Inherited from DataGridViewCell.)
Protected methodOnEnterCalled when the focus moves to a cell. (Inherited from DataGridViewCell.)
Protected methodOnKeyDownCalled when a character key is pressed while the focus is on the cell. (Overrides DataGridViewCell.OnKeyDown(KeyEventArgs, Int32).)
Protected methodOnKeyPressCalled when a key is pressed while the focus is on a cell. (Inherited from DataGridViewCell.)
Protected methodOnKeyUpCalled when a character key is released while the focus is on the cell. (Overrides DataGridViewCell.OnKeyUp(KeyEventArgs, Int32).)
Protected methodOnLeaveCalled when the focus moves from the cell. (Overrides DataGridViewCell.OnLeave(Int32, Boolean).)
Protected methodOnMouseClickCalled when the user clicks a mouse button while the pointer is on a cell. (Inherited from DataGridViewCell.)
Protected methodOnMouseDoubleClickCalled when the user double-clicks a mouse button while the pointer is on a cell. (Inherited from DataGridViewCell.)
Protected methodOnMouseDownCalled when the mouse button is held down while the pointer is on the cell. (Overrides DataGridViewCell.OnMouseDown(DataGridViewCellMouseEventArgs).)
Protected methodOnMouseEnterCalled when the mouse pointer moves over a cell. (Inherited from DataGridViewCell.)
Protected methodOnMouseLeaveCalled when the mouse pointer moves out of the cell. (Overrides DataGridViewCell.OnMouseLeave(Int32).)
Protected methodOnMouseMoveCalled when the mouse pointer moves while it is over the cell. (Overrides DataGridViewCell.OnMouseMove(DataGridViewCellMouseEventArgs).)
Protected methodOnMouseUpCalled when the mouse button is released while the pointer is on the cell. (Overrides DataGridViewCell.OnMouseUp(DataGridViewCellMouseEventArgs).)
Protected methodPaintPaints the current DataGridViewButtonCell. (Overrides DataGridViewCell.Paint(Graphics, Rectangle, Rectangle, Int32, DataGridViewElementStates, Object, Object, String, DataGridViewCellStyle, DataGridViewAdvancedBorderStyle, DataGridViewPaintParts).)
Protected methodPaintBorderPaints the border of the current DataGridViewCell. (Inherited from DataGridViewCell.)
Protected methodPaintErrorIconPaints the error icon of the current DataGridViewCell. (Inherited from DataGridViewCell.)
Public methodParseFormattedValueConverts a value formatted for display to an actual cell value. (Inherited from DataGridViewCell.)
Public methodPositionEditingControlSets the location and size of the editing control hosted by a cell in the DataGridView control. (Inherited from DataGridViewCell.)
Public methodPositionEditingPanelSets the location and size of the editing panel hosted by the cell, and returns the normal bounds of the editing control within the editing panel. (Inherited from DataGridViewCell.)
Protected methodRaiseCellClickRaises the DataGridView.CellClick event. (Inherited from DataGridViewElement.)
Protected methodRaiseCellContentClickRaises the DataGridView.CellContentClick event. (Inherited from DataGridViewElement.)
Protected methodRaiseCellContentDoubleClickRaises the DataGridView.CellContentDoubleClick event. (Inherited from DataGridViewElement.)
Protected methodRaiseCellValueChangedRaises the DataGridView.CellValueChanged event. (Inherited from DataGridViewElement.)
Protected methodRaiseDataErrorRaises the DataGridView.DataError event. (Inherited from DataGridViewElement.)
Protected methodRaiseMouseWheelRaises the Control.MouseWheel event. (Inherited from DataGridViewElement.)
Protected methodSetValueSets the value of the cell. (Inherited from DataGridViewCell.)
Public methodToStringReturns the string representation of the cell. (Overrides DataGridViewCell.ToString().)
Top

The DataGridViewButtonCell class is a specialized type of DataGridViewCell used to display a button-like UI.

DataGridViewButtonColumn is the column type specialized to hold cells of this type. By default, the DataGridViewButtonColumn.CellTemplate is initialized to a new DataGridViewButtonCell. To pattern the cells within a column after an existing DataGridViewButtonCell, set the column's CellTemplate property to the cell to use as a pattern.

To respond to user button clicks, handle the DataGridView.CellClick or DataGridView.CellContentClick event. In the event handler, you can use the DataGridViewCellEventArgs.ColumnIndex property to determine whether the click occurred a the button column. You can use the DataGridViewCellEventArgs.RowIndex property to determine whether the click occurred in a particular button cell.

The cell-related properties of the column are wrappers for the similarly-named properties of the template cell. Changing the property values of the template cell will affect only cells based on the template that are added after the change. Changing the cell-related property values of the column, however, will update the template cell and all other cells in the column, and refresh the column display if necessary.

NoteNote

When visual styles are enabled, the buttons in a button column are painted using a ButtonRenderer, and cell styles specified through properties such as DefaultCellStyle have no effect.

Notes to Inheritors

When you derive from DataGridViewButtonCell 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 demonstrates how to use a DataGridViewButtonColumn to perform actions on particular rows. You can use similar code when working with individual DataGridViewButtonCell objects. In this example, a DataGridView.CellClick event handler first determines whether a click is on a button cell, then retrieves a business object associated with the row. This example is part of a larger example available in How to: Access Objects in a Windows Forms DataGridViewComboBoxCell Drop-Down List.


public class Form1 : Form
{
    private List<Employee> employees = new List<Employee>();
    private List<Task> tasks = new List<Task>();
    private Button reportButton = new Button();
    private DataGridView dataGridView1 = new DataGridView();

    [STAThread]
    public static void Main()
    {
        Application.Run(new Form1());
    }

    public Form1()
    {
        dataGridView1.Dock = DockStyle.Fill;
        dataGridView1.AutoSizeColumnsMode = 
            DataGridViewAutoSizeColumnsMode.AllCells;
        reportButton.Text = "Generate Report";
        reportButton.Dock = DockStyle.Top;
        reportButton.Click += new EventHandler(reportButton_Click);

        Controls.Add(dataGridView1);
        Controls.Add(reportButton);
        Load += new EventHandler(Form1_Load);
        Text = "DataGridViewComboBoxColumn Demo";
    }

    // Initializes the data source and populates the DataGridView control.
    private void Form1_Load(object sender, EventArgs e)
    {
        PopulateLists();
        dataGridView1.AutoGenerateColumns = false;
        dataGridView1.DataSource = tasks;
        AddColumns();
    }

    // Populates the employees and tasks lists. 
    private void PopulateLists()
    {
        employees.Add(new Employee("Harry"));
        employees.Add(new Employee("Sally"));
        employees.Add(new Employee("Roy"));
        employees.Add(new Employee("Pris"));
        tasks.Add(new Task(1, employees[1]));
        tasks.Add(new Task(2));
        tasks.Add(new Task(3, employees[2]));
        tasks.Add(new Task(4));
    }

    // Configures columns for the DataGridView control.
    private void AddColumns()
    {
        DataGridViewTextBoxColumn idColumn = 
            new DataGridViewTextBoxColumn();
        idColumn.Name = "Task";
        idColumn.DataPropertyName = "Id";
        idColumn.ReadOnly = true;

        DataGridViewComboBoxColumn assignedToColumn = 
            new DataGridViewComboBoxColumn();

        // Populate the combo box drop-down list with Employee objects. 
        foreach (Employee e in employees) assignedToColumn.Items.Add(e);

        // Add "unassigned" to the drop-down list and display it for 
        // empty AssignedTo values or when the user presses CTRL+0. 
        assignedToColumn.Items.Add("unassigned");
        assignedToColumn.DefaultCellStyle.NullValue = "unassigned";

        assignedToColumn.Name = "Assigned To";
        assignedToColumn.DataPropertyName = "AssignedTo";
        assignedToColumn.AutoComplete = true;
        assignedToColumn.DisplayMember = "Name";
        assignedToColumn.ValueMember = "Self";

        // Add a button column. 
        DataGridViewButtonColumn buttonColumn = 
            new DataGridViewButtonColumn();
        buttonColumn.HeaderText = "";
        buttonColumn.Name = "Status Request";
        buttonColumn.Text = "Request Status";
        buttonColumn.UseColumnTextForButtonValue = true;

        dataGridView1.Columns.Add(idColumn);
        dataGridView1.Columns.Add(assignedToColumn);
        dataGridView1.Columns.Add(buttonColumn);

        // Add a CellClick handler to handle clicks in the button column.
        dataGridView1.CellClick +=
            new DataGridViewCellEventHandler(dataGridView1_CellClick);
    }

    // Reports on task assignments. 
    private void reportButton_Click(object sender, EventArgs e)
    {
        StringBuilder report = new StringBuilder();
        foreach (Task t in tasks)
        {
            String assignment = 
                t.AssignedTo == null ? 
                "unassigned" : "assigned to " + t.AssignedTo.Name;
            report.AppendFormat("Task {0} is {1}.", t.Id, assignment);
            report.Append(Environment.NewLine);
        }
        MessageBox.Show(report.ToString(), "Task Assignments");
    }

    // Calls the Employee.RequestStatus method.
    void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        // Ignore clicks that are not on button cells. 
        if (e.RowIndex < 0 || e.ColumnIndex !=
            dataGridView1.Columns["Status Request"].Index) return;

        // Retrieve the task ID.
        Int32 taskID = (Int32)dataGridView1[0, e.RowIndex].Value;

        // Retrieve the Employee object from the "Assigned To" cell.
        Employee assignedTo = dataGridView1.Rows[e.RowIndex]
            .Cells["Assigned To"].Value as Employee;

        // Request status through the Employee object if present. 
        if (assignedTo != null)
        {
            assignedTo.RequestStatus(taskID);
        }
        else
        {
            MessageBox.Show(String.Format(
                "Task {0} is unassigned.", taskID), "Status Request");
        }
    }

}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

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

Community Additions

ADD
Show:
© 2014 Microsoft