DataGridViewButtonColumn 类

定义

承载一个 DataGridViewButtonCell 对象集合。

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

示例

下面的代码示例演示如何使用 DataGridViewButtonColumn 对特定行执行操作。 在此示例中, DataGridView.CellClick 事件处理程序首先确定单击是否在按钮单元格上,然后检索与该行关联的业务对象。 此示例是 How to: Access Objects in a Windows 窗体 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");
        }
    }
}
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 = _
            DataGridViewAutoSizeColumnsMode.AllCells
        reportButton.Text = "Generate Report"
        reportButton.Dock = DockStyle.Top

        Controls.Add(dataGridView1)
        Controls.Add(reportButton)
        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

        PopulateLists()
        dataGridView1.AutoGenerateColumns = False
        dataGridView1.DataSource = tasks
        AddColumns()

    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
            assignedToColumn.Items.Add(e)
        Next

        ' 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. 
        Dim buttonColumn As 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)

    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"
            Else
                assignment = "assigned to " + t.AssignedTo.Name
            End If
            report.AppendFormat("Task {0} is {1}.", t.Id, assignment)
            report.Append(Environment.NewLine)
        Next
        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
            assignedTo.RequestStatus(taskID)
        Else
            MessageBox.Show(String.Format( _
                "Task {0} is unassigned.", taskID), "Status Request")
        End If

    End Sub

End Class

注解

DataGridViewButtonColumn 是类的一种专用类型, DataGridViewColumn 用于在逻辑上托管响应简单用户输入的单元格。 在DataGridViewButtonColumn与它相交的每个 中都有DataGridViewRow关联的 DataGridViewButtonCell 。 每个单元格 (UI) 提供类似于 控件的 Button 用户界面。

若要显示每个单元格的相同按钮文本,请将 UseColumnTextForButtonValue 属性设置为 true ,并将 属性设置为 Text 所需的按钮文本。

此列类型的默认排序模式为 NotSortable

若要响应用户按钮单击,请处理 DataGridView.CellClickDataGridView.CellContentClick 事件。 在 事件处理程序中,可以使用 DataGridViewCellEventArgs.ColumnIndex 属性来确定按钮列中是否发生了单击。 可以使用 DataGridViewCellEventArgs.RowIndex 属性来确定单击是否发生在按钮单元格中,而不是在列标题上。

注意

启用视觉样式后,将使用 绘制 ButtonRenderer按钮列中的按钮,并且通过属性(如 ) DefaultCellStyle 指定的单元格样式不起作用。

继承者说明

DataGridViewButtonColumn 派生类并将新属性添加到派生类时,请务必重写 Clone() 方法,以在克隆操作期间复制新属性。 还应调用基类的 Clone() 方法,以便将基类的属性复制到新单元格。

构造函数

DataGridViewButtonColumn()

DataGridViewButtonColumn 类的新实例初始化为默认状态。

属性

AutoSizeMode

获取或设置模式,通过此模式列可以自动调整其宽度。

(继承自 DataGridViewColumn)
CellTemplate

获取或设置用于创建新单元格的模板。

CellType

获取单元格模板的运行时类型。

(继承自 DataGridViewColumn)
ContextMenuStrip

获取或设置列的快捷菜单。

(继承自 DataGridViewColumn)
DataGridView

获取与此元素关联的 DataGridView 控件。

(继承自 DataGridViewElement)
DataPropertyName

获取或设置数据源属性的名称或与 DataGridViewColumn 绑定的数据库列的名称。

(继承自 DataGridViewColumn)
DefaultCellStyle

获取或设置列的默认单元格样式。

DefaultHeaderCellType

获取或设置默认标题单元格的运行时类型。

(继承自 DataGridViewBand)
Displayed

获取一个值,该值指示带区当前是否显示在屏幕上。

(继承自 DataGridViewBand)
DisplayIndex

相对于当前所显示各列,获取或设置列的显示顺序。

(继承自 DataGridViewColumn)
DividerWidth

获取或设置列分隔符的宽度(以像素为单位)。

(继承自 DataGridViewColumn)
FillWeight

获取或设置一个值,表示当该列处于填充模式时,相对于控件中处于填充模式的其他列的宽度。

(继承自 DataGridViewColumn)
FlatStyle

获取或设置列中按钮单元格的平面样式外观。

Frozen

获取或设置一个值,指示当用户水平滚动 DataGridView 控件时,列是否移动。

(继承自 DataGridViewColumn)
HasDefaultCellStyle

获取指示是否已设置 DefaultCellStyle 属性的值。

(继承自 DataGridViewBand)
HeaderCell

获取或设置表示列标题的 DataGridViewColumnHeaderCell

(继承自 DataGridViewColumn)
HeaderCellCore

获取或设置 DataGridViewBand 的标题单元格。

(继承自 DataGridViewBand)
HeaderText

获取或设置列标题单元格的标题文本。

(继承自 DataGridViewColumn)
Index

获取带区在 DataGridView 控件中的相对位置。

(继承自 DataGridViewBand)
InheritedAutoSizeMode

获取对该列有效的缩放模式。

(继承自 DataGridViewColumn)
InheritedStyle

获取当前应用于该列的单元格样式。

(继承自 DataGridViewColumn)
IsDataBound

获取一个值,指示该列是否绑定到某个数据源。

(继承自 DataGridViewColumn)
IsRow

获取一个值,该值指示带区是否表示一个行。

(继承自 DataGridViewBand)
MinimumWidth

获取或设置列的最小宽度(以像素为单位)。

(继承自 DataGridViewColumn)
Name

获取或设置该列的名称。

(继承自 DataGridViewColumn)
ReadOnly

获取或设置一个值,指示用户是否可以编辑列的单元格。

(继承自 DataGridViewColumn)
Resizable

获取或设置一个值,指示该列的大小是否可调。

(继承自 DataGridViewColumn)
Selected

获取或设置一个值,该值指示带区是否为被选定。

(继承自 DataGridViewBand)
Site

获取或设置列的站点。

(继承自 DataGridViewColumn)
SortMode

获取或设置列的排序模式。

(继承自 DataGridViewColumn)
State

获取元素的用户界面 (UI) 状态。

(继承自 DataGridViewElement)
Tag

获取或设置包含与带区关联的数据的对象。

(继承自 DataGridViewBand)
Text

获取或设置显示在按钮单元格上的默认文本。

ToolTipText

获取或设置用于工具提示的文本。

(继承自 DataGridViewColumn)
UseColumnTextForButtonValue

获取或设置一个值,指示 Text 属性值是否显示为此列中单元格的按钮文本。

ValueType

获取或设置列单元格中值的数据类型。

(继承自 DataGridViewColumn)
Visible

获取或设置一个值,该值指示该列是否可见。

(继承自 DataGridViewColumn)
Width

获取或设置该列的当前宽度。

(继承自 DataGridViewColumn)

方法

Clone()

创建此列的一个精确副本。

Dispose()

释放由 DataGridViewBand 使用的所有资源。

(继承自 DataGridViewBand)
Dispose(Boolean)

释放由 DataGridViewBand 占用的非托管资源,还可以另外再释放托管资源。

(继承自 DataGridViewColumn)
Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

根据指定条件计算列的理想宽度。

(继承自 DataGridViewColumn)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
OnDataGridViewChanged()

当带区与其他 DataGridView 关联时调用。

(继承自 DataGridViewBand)
RaiseCellClick(DataGridViewCellEventArgs)

引发 CellClick 事件。

(继承自 DataGridViewElement)
RaiseCellContentClick(DataGridViewCellEventArgs)

引发 CellContentClick 事件。

(继承自 DataGridViewElement)
RaiseCellContentDoubleClick(DataGridViewCellEventArgs)

引发 CellContentDoubleClick 事件。

(继承自 DataGridViewElement)
RaiseCellValueChanged(DataGridViewCellEventArgs)

引发 CellValueChanged 事件。

(继承自 DataGridViewElement)
RaiseDataError(DataGridViewDataErrorEventArgs)

引发 DataError 事件。

(继承自 DataGridViewElement)
RaiseMouseWheel(MouseEventArgs)

引发 MouseWheel 事件。

(继承自 DataGridViewElement)
ToString()

获取一个描述该列的字符串。

事件

Disposed

释放 DataGridViewColumn 时发生。

(继承自 DataGridViewColumn)

适用于

另请参阅