DataGridViewButtonColumn DataGridViewButtonColumn DataGridViewButtonColumn DataGridViewButtonColumn Class


承载一个 DataGridViewButtonCell 对象集合。Hosts a collection of DataGridViewButtonCell objects.

public ref class DataGridViewButtonColumn : System::Windows::Forms::DataGridViewColumn
[System.Drawing.ToolboxBitmap(typeof(System.Windows.Forms.DataGridViewButtonColumn), "DataGridViewButtonColumn.bmp")]
[System.Drawing.ToolboxBitmap(typeof(System.Windows.Forms.DataGridViewButtonColumn), "DataGridViewButtonColumn")]
public class DataGridViewButtonColumn : System.Windows.Forms.DataGridViewColumn
type DataGridViewButtonColumn = class
    inherit DataGridViewColumn
Public Class DataGridViewButtonColumn
Inherits DataGridViewColumn


下面的代码示例演示如何使用DataGridViewButtonColumn对特定行执行操作。The following code example demonstrates how to use a DataGridViewButtonColumn to perform actions on particular rows. 在此示例中, DataGridView.CellClick事件处理程序首先确定按钮单元上的单击是否为, 然后检索与该行关联的业务对象。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. 此示例摘自了如何:访问 Windows 窗体 DataGridViewComboBoxCell "下拉列表中的对象。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();

    public static void Main()
        Application.Run(new Form1());

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

        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)
        dataGridView1.AutoGenerateColumns = false;
        dataGridView1.DataSource = tasks;

    // 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.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;


        // 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);
        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)
                "Task {0} is unassigned.", taskID), "Status Request");

Public Class Form1
    Inherits Form

    Private employees As New List(Of Employee)
    Private tasks As New List(Of Task)
    Private WithEvents reportButton As New Button
    Private WithEvents dataGridView1 As New DataGridView

    <STAThread()> _
    Public Sub Main()
        Application.Run(New Form1)
    End Sub

    Sub New()
        dataGridView1.Dock = DockStyle.Fill
        dataGridView1.AutoSizeColumnsMode = _
        reportButton.Text = "Generate Report"
        reportButton.Dock = DockStyle.Top

        Text = "DataGridViewComboBoxColumn Demo"
    End Sub

    ' Initializes the data source and populates the DataGridView control.
    Private Sub Form1_Load(ByVal sender As Object, _
        ByVal e As EventArgs) Handles Me.Load

        dataGridView1.AutoGenerateColumns = False
        dataGridView1.DataSource = tasks

    End Sub

    ' Populates the employees and tasks lists. 
    Private Sub 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))
    End Sub

    ' Configures columns for the DataGridView control.
    Private Sub AddColumns()

        Dim idColumn As New DataGridViewTextBoxColumn()
        idColumn.Name = "Task"
        idColumn.DataPropertyName = "Id"
        idColumn.ReadOnly = True

        Dim assignedToColumn As New DataGridViewComboBoxColumn()

        ' Populate the combo box drop-down list with Employee objects. 
        For Each e As Employee In employees

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

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

        ' Add a button column. 
        Dim buttonColumn As New DataGridViewButtonColumn()
        buttonColumn.HeaderText = ""
        buttonColumn.Name = "Status Request"
        buttonColumn.Text = "Request Status"
        buttonColumn.UseColumnTextForButtonValue = True


    End Sub

    ' Reports on task assignments. 
    Private Sub reportButton_Click(ByVal sender As Object, _
        ByVal e As EventArgs) Handles reportButton.Click

        Dim report As New StringBuilder()
        For Each t As Task In tasks
            Dim assignment As String
            If t.AssignedTo Is Nothing Then
                assignment = "unassigned"
                assignment = "assigned to " + t.AssignedTo.Name
            End If
            report.AppendFormat("Task {0} is {1}.", t.Id, assignment)
        MessageBox.Show(report.ToString(), "Task Assignments")

    End Sub

    ' Calls the Employee.RequestStatus method.
    Private Sub dataGridView1_CellClick(ByVal sender As Object, _
        ByVal e As DataGridViewCellEventArgs) _
        Handles dataGridView1.CellClick

        ' Ignore clicks that are not on button cells. 
        If e.RowIndex < 0 OrElse Not e.ColumnIndex = _
            dataGridView1.Columns("Status Request").Index Then Return

        ' Retrieve the task ID.
        Dim taskID As Int32 = CInt(dataGridView1(0, e.RowIndex).Value)

        ' Retrieve the Employee object from the "Assigned To" cell.
        Dim assignedTo As Employee = TryCast(dataGridView1.Rows(e.RowIndex) _
            .Cells("Assigned To").Value, Employee)

        ' Request status through the Employee object if present. 
        If assignedTo IsNot Nothing Then
            MessageBox.Show(String.Format( _
                "Task {0} is unassigned.", taskID), "Status Request")
        End If

    End Sub

End Class


类是DataGridViewColumn类的专用类型, 用于以逻辑方式承载响应简单用户输入的单元格。 DataGridViewButtonColumnThe DataGridViewButtonColumn class is a specialized type of the DataGridViewColumn class used to logically host cells that respond to simple user input. 在中, 每DataGridViewButtonCellDataGridViewRow都与它相交。 DataGridViewButtonColumnA DataGridViewButtonColumn has an associated DataGridViewButtonCell in every DataGridViewRow that intersects it. 每个单元格提供类似Button于控件的用户界面 (UI)。Each cell supplies a user interface (UI) that is similar to a Button control.

若要为每个单元格显示相同的按钮文本UseColumnTextForButtonValue , 请true将属性设置Text为, 并将属性设置为所需的按钮文本。To display the same button text for every cell, set the UseColumnTextForButtonValue property to true and set the Text property to the desired button text.

此列类型的默认排序模式为NotSortableThe default sort mode for this column type is NotSortable.

若要响应用户按钮单击, 请处理DataGridView.CellClickDataGridView.CellContentClick事件。To respond to user button clicks, handle the DataGridView.CellClick or DataGridView.CellContentClick event. 在事件处理程序中, 可以使用DataGridViewCellEventArgs.ColumnIndex属性来确定按钮列中是否发生了单击。In the event handler, you can use the DataGridViewCellEventArgs.ColumnIndex property to determine whether the click occurred in the button column. 您可以使用DataGridViewCellEventArgs.RowIndex属性来确定按钮单元中是否发生了单击, 而不是列标题上。You can use the DataGridViewCellEventArgs.RowIndex property to determine whether the click occurred in a button cell and not on the column header.


启用视觉样式后, 将使用ButtonRenderer绘制按钮列中的按钮, 并且通过属性 (如) DefaultCellStyle指定的单元样式不起作用。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.


当从DataGridViewButtonColumn派生类派生并向其添加新属性时, 请确保Clone()重写方法以在克隆操作过程中复制新属性。When you derive from DataGridViewButtonColumn and add new properties to the derived class, be sure to override the Clone() method to copy the new properties during cloning operations. 还应调用基类的Clone()方法, 以便将基类的属性复制到新单元。You should also call the base class's Clone() method so that the properties of the base class are copied to the new cell.


DataGridViewButtonColumn() DataGridViewButtonColumn() DataGridViewButtonColumn() DataGridViewButtonColumn()

DataGridViewButtonColumn 类的新实例初始化为默认状态。Initializes a new instance of the DataGridViewButtonColumn class to the default state.


AutoSizeMode AutoSizeMode AutoSizeMode AutoSizeMode

获取或设置模式,通过此模式列可以自动调整其宽度。Gets or sets the mode by which the column automatically adjusts its width.

(Inherited from DataGridViewColumn)
CellTemplate CellTemplate CellTemplate CellTemplate

获取或设置用于创建新单元格的模板。Gets or sets the template used to create new cells.

CellType CellType CellType CellType

获取单元格模板的运行时类型。Gets the run-time type of the cell template.

(Inherited from DataGridViewColumn)
ContextMenuStrip ContextMenuStrip ContextMenuStrip ContextMenuStrip

获取或设置列的快捷菜单。Gets or sets the shortcut menu for the column.

(Inherited from DataGridViewColumn)
DataGridView DataGridView DataGridView DataGridView

获取与此元素关联的 DataGridView 控件。Gets the DataGridView control associated with this element.

(Inherited from DataGridViewElement)
DataPropertyName DataPropertyName DataPropertyName DataPropertyName

获取或设置数据源属性的名称或与 DataGridViewColumn 绑定的数据库列的名称。Gets or sets the name of the data source property or database column to which the DataGridViewColumn is bound.

(Inherited from DataGridViewColumn)
DefaultCellStyle DefaultCellStyle DefaultCellStyle DefaultCellStyle

获取或设置列的默认单元格样式。Gets or sets the column's default cell style.

DefaultHeaderCellType DefaultHeaderCellType DefaultHeaderCellType DefaultHeaderCellType

获取或设置默认标题单元格的运行时类型。Gets or sets the run-time type of the default header cell.

(Inherited from DataGridViewBand)
Displayed Displayed Displayed Displayed

获取一个值,该值指示带区当前是否显示在屏幕上。Gets a value indicating whether the band is currently displayed onscreen.

(Inherited from DataGridViewBand)
DisplayIndex DisplayIndex DisplayIndex DisplayIndex

相对于当前所显示各列,获取或设置列的显示顺序。Gets or sets the display order of the column relative to the currently displayed columns.

(Inherited from DataGridViewColumn)
DividerWidth DividerWidth DividerWidth DividerWidth

获取或设置列分隔符的宽度(以像素为单位)。Gets or sets the width, in pixels, of the column divider.

(Inherited from DataGridViewColumn)
FillWeight FillWeight FillWeight FillWeight

获取或设置一个值,表示当该列处于填充模式时,相对于控件中处于填充模式的其他列的宽度。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.

(Inherited from DataGridViewColumn)
FlatStyle FlatStyle FlatStyle FlatStyle

获取或设置列中按钮单元格的平面样式外观。Gets or sets the flat-style appearance of the button cells in the column.

Frozen Frozen Frozen Frozen

获取或设置一个值,指示当用户水平滚动 DataGridView 控件时,列是否移动。Gets or sets a value indicating whether a column will move when a user scrolls the DataGridView control horizontally.

(Inherited from DataGridViewColumn)
HasDefaultCellStyle HasDefaultCellStyle HasDefaultCellStyle HasDefaultCellStyle

获取指示是否已设置 DefaultCellStyle 属性的值。Gets a value indicating whether the DefaultCellStyle property has been set.

(Inherited from DataGridViewBand)
HeaderCell HeaderCell HeaderCell HeaderCell

获取或设置表示列标题的 DataGridViewColumnHeaderCellGets or sets the DataGridViewColumnHeaderCell that represents the column header.

(Inherited from DataGridViewColumn)
HeaderCellCore HeaderCellCore HeaderCellCore HeaderCellCore

获取或设置 DataGridViewBand 的标题单元格。Gets or sets the header cell of the DataGridViewBand.

(Inherited from DataGridViewBand)
HeaderText HeaderText HeaderText HeaderText

获取或设置列标题单元格的标题文本。Gets or sets the caption text on the column's header cell.

(Inherited from DataGridViewColumn)
Index Index Index Index

获取带区在 DataGridView 控件中的相对位置。Gets the relative position of the band within the DataGridView control.

(Inherited from DataGridViewBand)
InheritedAutoSizeMode InheritedAutoSizeMode InheritedAutoSizeMode InheritedAutoSizeMode

获取对该列有效的缩放模式。Gets the sizing mode in effect for the column.

(Inherited from DataGridViewColumn)
InheritedStyle InheritedStyle InheritedStyle InheritedStyle

获取当前应用于该列的单元格样式。Gets the cell style currently applied to the column.

(Inherited from DataGridViewColumn)
IsDataBound IsDataBound IsDataBound IsDataBound

获取一个值,指示该列是否绑定到某个数据源。Gets a value indicating whether the column is bound to a data source.

(Inherited from DataGridViewColumn)
IsRow IsRow IsRow IsRow

获取一个值,该值指示带区是否表示一个行。Gets a value indicating whether the band represents a row.

(Inherited from DataGridViewBand)
MinimumWidth MinimumWidth MinimumWidth MinimumWidth

获取或设置列的最小宽度(以像素为单位)。Gets or sets the minimum width, in pixels, of the column.

(Inherited from DataGridViewColumn)
Name Name Name Name

获取或设置列名称。Gets or sets the name of the column.

(Inherited from DataGridViewColumn)
ReadOnly ReadOnly ReadOnly ReadOnly

获取或设置一个值,指示用户是否可以编辑列的单元格。Gets or sets a value indicating whether the user can edit the column's cells.

(Inherited from DataGridViewColumn)
Resizable Resizable Resizable Resizable

获取或设置一个值,指示该列的大小是否可调。Gets or sets a value indicating whether the column is resizable.

(Inherited from DataGridViewColumn)
Selected Selected Selected Selected

获取或设置一个值,该值指示带区是否为被选定。Gets or sets a value indicating whether the band is in a selected user interface (UI) state.

(Inherited from DataGridViewBand)
Site Site Site Site

获取或设置列的站点。Gets or sets the site of the column.

(Inherited from DataGridViewColumn)
SortMode SortMode SortMode SortMode

获取或设置列的排序模式。Gets or sets the sort mode for the column.

(Inherited from DataGridViewColumn)
State State State State

获取元素的用户界面 (UI) 状态。Gets the user interface (UI) state of the element.

(Inherited from DataGridViewElement)
Tag Tag Tag Tag

获取或设置包含与带区关联的数据的对象。Gets or sets the object that contains data to associate with the band.

(Inherited from DataGridViewBand)
Text Text Text Text

获取或设置显示在按钮单元格上的默认文本。Gets or sets the default text displayed on the button cell.

ToolTipText ToolTipText ToolTipText ToolTipText

获取或设置用于工具提示的文本。Gets or sets the text used for ToolTips.

(Inherited from DataGridViewColumn)
UseColumnTextForButtonValue UseColumnTextForButtonValue UseColumnTextForButtonValue UseColumnTextForButtonValue

获取或设置一个值,指示 Text 属性值是否显示为此列中单元格的按钮文本。Gets or sets a value indicating whether the Text property value is displayed as the button text for cells in this column.

ValueType ValueType ValueType ValueType

获取或设置列单元格中值的数据类型。Gets or sets the data type of the values in the column's cells.

(Inherited from DataGridViewColumn)
Visible Visible Visible Visible

获取或设置一个值,指示该列是否可见。Gets or sets a value indicating whether the column is visible.

(Inherited from DataGridViewColumn)
Width Width Width Width

获取或设置列的当前宽度。Gets or sets the current width of the column.

(Inherited from DataGridViewColumn)


Clone() Clone() Clone() Clone()

创建此列的一个精确副本。Creates an exact copy of this column.

Dispose() Dispose() Dispose() Dispose()

释放由 DataGridViewBand 使用的所有资源。Releases all resources used by the DataGridViewBand.

(Inherited from DataGridViewBand)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

释放由 DataGridViewBand 占用的非托管资源,还可以另外再释放托管资源。Releases the unmanaged resources used by the DataGridViewBand and optionally releases the managed resources.

(Inherited from DataGridViewColumn)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

确定指定的对象是否等于当前对象。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

作为默认哈希函数。Serves as the default hash function.

(Inherited from Object)
GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean) GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean) GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean) GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

根据指定条件计算列的理想宽度。Calculates the ideal width of the column based on the specified criteria.

(Inherited from DataGridViewColumn)
GetType() GetType() GetType() GetType()

获取当前实例的 TypeGets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

创建当前 Object 的浅表副本。Creates a shallow copy of the current Object.

(Inherited from Object)
OnDataGridViewChanged() OnDataGridViewChanged() OnDataGridViewChanged() OnDataGridViewChanged()

当带区与其他 DataGridView 关联时调用。Called when the band is associated with a different DataGridView.

(Inherited from DataGridViewBand)
RaiseCellClick(DataGridViewCellEventArgs) RaiseCellClick(DataGridViewCellEventArgs) RaiseCellClick(DataGridViewCellEventArgs) RaiseCellClick(DataGridViewCellEventArgs)

引发 CellClick 事件。Raises the CellClick event.

(Inherited from DataGridViewElement)
RaiseCellContentClick(DataGridViewCellEventArgs) RaiseCellContentClick(DataGridViewCellEventArgs) RaiseCellContentClick(DataGridViewCellEventArgs) RaiseCellContentClick(DataGridViewCellEventArgs)

引发 CellContentClick 事件。Raises the CellContentClick event.

(Inherited from DataGridViewElement)
RaiseCellContentDoubleClick(DataGridViewCellEventArgs) RaiseCellContentDoubleClick(DataGridViewCellEventArgs) RaiseCellContentDoubleClick(DataGridViewCellEventArgs) RaiseCellContentDoubleClick(DataGridViewCellEventArgs)

引发 CellContentDoubleClick 事件。Raises the CellContentDoubleClick event.

(Inherited from DataGridViewElement)
RaiseCellValueChanged(DataGridViewCellEventArgs) RaiseCellValueChanged(DataGridViewCellEventArgs) RaiseCellValueChanged(DataGridViewCellEventArgs) RaiseCellValueChanged(DataGridViewCellEventArgs)

引发 CellValueChanged 事件。Raises the CellValueChanged event.

(Inherited from DataGridViewElement)
RaiseDataError(DataGridViewDataErrorEventArgs) RaiseDataError(DataGridViewDataErrorEventArgs) RaiseDataError(DataGridViewDataErrorEventArgs) RaiseDataError(DataGridViewDataErrorEventArgs)

引发 DataError 事件。Raises the DataError event.

(Inherited from DataGridViewElement)
RaiseMouseWheel(MouseEventArgs) RaiseMouseWheel(MouseEventArgs) RaiseMouseWheel(MouseEventArgs) RaiseMouseWheel(MouseEventArgs)

引发 MouseWheel 事件。Raises the MouseWheel event.

(Inherited from DataGridViewElement)
ToString() ToString() ToString() ToString()

获取一个描述该列的字符串。Gets a string that describes the column.


Disposed Disposed Disposed Disposed

释放 DataGridViewColumn 时发生。Occurs when the DataGridViewColumn is disposed.

(Inherited from DataGridViewColumn)