DataGridViewButtonColumn Classe

Definição

Hospeda uma coleção de objetos 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
Herança
Atributos

Exemplos

O exemplo de código a seguir demonstra como usar um DataGridViewButtonColumn para executar ações em linhas específicas. Neste exemplo, um DataGridView.CellClick manipulador de eventos primeiro determina se um clique está em uma célula de botão e, em seguida, recupera um objeto de negócios associado à linha. Este exemplo faz parte de um exemplo maior disponível em 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");
        }
    }
}
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

Comentários

A DataGridViewButtonColumn classe é um tipo especializado da DataGridViewColumn classe usada para hospedar logicamente células que respondem à entrada simples do usuário. Um DataGridViewButtonColumn tem um associado DataGridViewButtonCell em cada DataGridViewRow que o cruza. Cada célula fornece uma interface do usuário semelhante a um Button controle .

Para exibir o mesmo texto de botão para cada célula, defina a UseColumnTextForButtonValue propriedade como true e defina a Text propriedade como o texto do botão desejado.

O modo de classificação padrão para esse tipo de coluna é NotSortable.

Para responder aos cliques do botão do usuário, manipule o DataGridView.CellClick evento ou DataGridView.CellContentClick . No manipulador de eventos, você pode usar a DataGridViewCellEventArgs.ColumnIndex propriedade para determinar se o clique ocorreu na coluna de botão. Você pode usar a DataGridViewCellEventArgs.RowIndex propriedade para determinar se o clique ocorreu em uma célula de botão e não no cabeçalho da coluna.

Observação

Quando os estilos visuais são habilitados, os botões em uma coluna de botão são pintados usando um ButtonRenderere os estilos de célula especificados por meio de propriedades como DefaultCellStyle não têm efeito.

Notas aos Herdeiros

Ao derivar de DataGridViewButtonColumn e adicionar novas propriedades à classe derivada, substitua o Clone() método para copiar as novas propriedades durante as operações de clonagem. Você também deve chamar o método da Clone() classe base para que as propriedades da classe base sejam copiadas para a nova célula.

Construtores

DataGridViewButtonColumn()

Inicializa uma nova instância da classe DataGridViewButtonColumn com o estado padrão.

Propriedades

AutoSizeMode

Obtém ou define o modo pelo qual a coluna ajusta a largura automaticamente.

(Herdado de DataGridViewColumn)
CellTemplate

Obtém ou define o modelo usado para criar novas células.

CellType

Obtém o tipo de tempo de execução do modelo de célula.

(Herdado de DataGridViewColumn)
ContextMenuStrip

Obtém ou define o menu de atalho da coluna.

(Herdado de DataGridViewColumn)
DataGridView

Obtém o controle de DataGridView associado a esse elemento.

(Herdado de DataGridViewElement)
DataPropertyName

Obtém ou define o nome da propriedade da fonte de dados ou da coluna de banco de dados à qual DataGridViewColumn está associado.

(Herdado de DataGridViewColumn)
DefaultCellStyle

Obtém ou define o estilo da célula padrão da coluna.

DefaultHeaderCellType

Obtém ou define o tipo de tempo de execução da célula de cabeçalho padrão.

(Herdado de DataGridViewBand)
Displayed

Obtém um valor que indica se a banda é exibida na tela no momento.

(Herdado de DataGridViewBand)
DisplayIndex

Obtém ou define a ordem de exibição da coluna em relação às colunas exibidas no momento.

(Herdado de DataGridViewColumn)
DividerWidth

Obtém ou define a largura mínima, em pixels, do divisor de coluna.

(Herdado de DataGridViewColumn)
FillWeight

Obtém ou define um valor que representa a largura da coluna quando ela está no modo de preenchimento em relação à largura das outras colunas de modo de preenchimento no controle.

(Herdado de DataGridViewColumn)
FlatStyle

Obtém ou define a aparência de estilo plano das células do botão na coluna.

Frozen

Obtém ou define um valor que indica se uma coluna será movida quando um usuário rolar o controle DataGridView horizontalmente.

(Herdado de DataGridViewColumn)
HasDefaultCellStyle

Obtém um valor que indica se a propriedade DefaultCellStyle foi definida.

(Herdado de DataGridViewBand)
HeaderCell

Obtém ou define o DataGridViewColumnHeaderCell que representa o cabeçalho da coluna.

(Herdado de DataGridViewColumn)
HeaderCellCore

Obtém ou define a célula de cabeçalho do DataGridViewBand.

(Herdado de DataGridViewBand)
HeaderText

Obtém ou define o texto de legenda na célula do cabeçalho da coluna.

(Herdado de DataGridViewColumn)
Index

Obtém a posição relativa da faixa dentro do controle DataGridView.

(Herdado de DataGridViewBand)
InheritedAutoSizeMode

Obtém o modo de redimensionamento em vigor para a coluna.

(Herdado de DataGridViewColumn)
InheritedStyle

Obtém o estilo aplicado atualmente à coluna.

(Herdado de DataGridViewColumn)
IsDataBound

Obtém um valor que indica se a coluna está associada a uma fonte de dados.

(Herdado de DataGridViewColumn)
IsRow

Obtém um valor que indica se a banda representa uma linha.

(Herdado de DataGridViewBand)
MinimumWidth

Obtém ou define a largura mínima, em pixels, da coluna.

(Herdado de DataGridViewColumn)
Name

Obtém ou define o nome da coluna.

(Herdado de DataGridViewColumn)
ReadOnly

Obtém ou define um valor que indica se o usuário pode editar as células da coluna.

(Herdado de DataGridViewColumn)
Resizable

Obtém ou define um valor que indica se a coluna é redimensionável.

(Herdado de DataGridViewColumn)
Selected

Obtém ou define um valor que indica se a banda está em um estado de interface do usuário selecionado.

(Herdado de DataGridViewBand)
Site

Obtém ou define o site da coluna.

(Herdado de DataGridViewColumn)
SortMode

Obtém ou define o modo de classificação da coluna.

(Herdado de DataGridViewColumn)
State

Obtém o estado da UI (interface do usuário) do elemento.

(Herdado de DataGridViewElement)
Tag

Obtém ou define o objeto que contém os dados associados à banda.

(Herdado de DataGridViewBand)
Text

Obtém ou define o texto padrão exibido na célula do botão.

ToolTipText

Obtém ou define o texto usado para Dicas de Ferramentas.

(Herdado de DataGridViewColumn)
UseColumnTextForButtonValue

Obtém ou define um valor que indica se o valor da propriedade Text será exibido como o texto do botão para as células nesta coluna.

ValueType

Obtém ou define o tipo de dados dos valores nas células da coluna.

(Herdado de DataGridViewColumn)
Visible

Obtém ou define um valor que indica se a coluna está visível.

(Herdado de DataGridViewColumn)
Width

Obtém ou define a largura atual da coluna.

(Herdado de DataGridViewColumn)

Métodos

Clone()

Cria uma cópia exata desta coluna.

Dispose()

Libera todos os recursos usados pelo DataGridViewBand.

(Herdado de DataGridViewBand)
Dispose(Boolean)

Libera os recursos não gerenciados usados pelo DataGridViewBand e opcionalmente libera os recursos gerenciados.

(Herdado de DataGridViewColumn)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

Calcula a largura ideal da coluna com base nos critérios especificados.

(Herdado de DataGridViewColumn)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
OnDataGridViewChanged()

Chamado quando a faixa está associada a um DataGridView diferente.

(Herdado de DataGridViewBand)
RaiseCellClick(DataGridViewCellEventArgs)

Aciona o evento CellClick.

(Herdado de DataGridViewElement)
RaiseCellContentClick(DataGridViewCellEventArgs)

Aciona o evento CellContentClick.

(Herdado de DataGridViewElement)
RaiseCellContentDoubleClick(DataGridViewCellEventArgs)

Aciona o evento CellContentDoubleClick.

(Herdado de DataGridViewElement)
RaiseCellValueChanged(DataGridViewCellEventArgs)

Aciona o evento CellValueChanged.

(Herdado de DataGridViewElement)
RaiseDataError(DataGridViewDataErrorEventArgs)

Aciona o evento DataError.

(Herdado de DataGridViewElement)
RaiseMouseWheel(MouseEventArgs)

Aciona o evento MouseWheel.

(Herdado de DataGridViewElement)
ToString()

Obtém uma cadeia de caracteres que descreve a coluna.

Eventos

Disposed

Ocorre quando o DataGridViewColumn é descartado.

(Herdado de DataGridViewColumn)

Aplica-se a

Confira também