Comparteix a través de


DataGridViewButtonColumn Clase

Definición

Hospeda una colección 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
Herencia
Atributos

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar un DataGridViewButtonColumn para realizar acciones en filas concretas. En este ejemplo, un DataGridView.CellClick controlador de eventos determina primero si un clic está en una celda de botón y, a continuación, recupera un objeto de negocio asociado a la fila. Este ejemplo forma parte de un ejemplo más grande disponible en 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

Comentarios

La DataGridViewButtonColumn clase es un tipo especializado de la DataGridViewColumn clase que se usa para hospedar lógicamente las celdas que responden a una entrada de usuario sencilla. Un DataGridViewButtonColumn objeto tiene asociado DataGridViewButtonCell en cada DataGridViewRow que lo interseca. Cada celda proporciona una interfaz de usuario (UI) similar a un Button control.

Para mostrar el mismo texto de botón para cada celda, establezca la UseColumnTextForButtonValue propiedad true en y establezca la Text propiedad en el texto del botón deseado.

El modo de ordenación predeterminado para este tipo de columna es NotSortable.

Para responder a los clics del botón de usuario, controle el DataGridView.CellClick evento o DataGridView.CellContentClick . En el controlador de eventos, puede usar la DataGridViewCellEventArgs.ColumnIndex propiedad para determinar si el clic se produjo en la columna de botón. Puede usar la DataGridViewCellEventArgs.RowIndex propiedad para determinar si el clic se produjo en una celda de botón y no en el encabezado de columna.

Nota

Cuando se habilitan los estilos visuales, los botones de una columna de botón se pintan mediante un ButtonRenderer, y los estilos de celda especificados mediante propiedades como, por DefaultCellStyle ejemplo, no tienen ningún efecto.

Notas a los desarrolladores de herederos

Cuando derive de DataGridViewButtonColumn y agregue nuevas propiedades a la clase derivada, asegúrese de invalidar el Clone() método para copiar las nuevas propiedades durante las operaciones de clonación. También debe llamar al método de Clone() la clase base para que las propiedades de la clase base se copien en la nueva celda.

Constructores

DataGridViewButtonColumn()

Inicializa una nueva instancia de la clase DataGridViewButtonColumn con el estado predeterminado.

Propiedades

AutoSizeMode

Obtiene o establece el modo mediante el cual la columna ajusta automáticamente su tamaño.

(Heredado de DataGridViewColumn)
CellTemplate

Obtiene o establece la plantilla utilizada para crear nuevas celdas.

CellType

Obtiene el tipo en tiempo de ejecución de la plantilla de celda.

(Heredado de DataGridViewColumn)
ContextMenuStrip

Obtiene o establece el menú contextual para la columna.

(Heredado de DataGridViewColumn)
DataGridView

Obtiene el control DataGridView asociado a este elemento.

(Heredado de DataGridViewElement)
DataPropertyName

Obtiene o establece el nombre de la columna de base de datos o la propiedad del origen de datos a la que se enlaza DataGridViewColumn.

(Heredado de DataGridViewColumn)
DefaultCellStyle

Obtiene o establece el estilo predeterminado de celda de la columna.

DefaultHeaderCellType

Obtiene o establece el tipo de la celda de encabezado predeterminada en tiempo de ejecución.

(Heredado de DataGridViewBand)
Displayed

Obtiene un valor que indica si la banda se muestra actualmente en la pantalla.

(Heredado de DataGridViewBand)
DisplayIndex

Obtiene o establece el orden de presentación de la columna respecto de las columnas actualmente mostradas.

(Heredado de DataGridViewColumn)
DividerWidth

Obtiene o establece el ancho, en píxeles, del divisor de columna.

(Heredado de DataGridViewColumn)
FillWeight

Obtiene o establece un valor que representa el ancho de la columna cuando se encuentra en modo de relleno, respecto del ancho de las demás columnas del control que estén en modo de relleno.

(Heredado de DataGridViewColumn)
FlatStyle

Obtiene o establece el aspecto de estilo plano de las celdas de botón de la columna.

Frozen

Obtiene o establece un valor que indica si la columna se va a mover cuando el usuario se desplace horizontalmente por el control DataGridView.

(Heredado de DataGridViewColumn)
HasDefaultCellStyle

Obtiene un valor que indica si se ha establecido la propiedad DefaultCellStyle.

(Heredado de DataGridViewBand)
HeaderCell

Obtiene o establece el objeto DataGridViewColumnHeaderCell que representa el encabezado de columna.

(Heredado de DataGridViewColumn)
HeaderCellCore

Obtiene o establece la celda de encabezado de DataGridViewBand.

(Heredado de DataGridViewBand)
HeaderText

Obtiene o establece el texto de título en la celda de encabezado de columna.

(Heredado de DataGridViewColumn)
Index

Obtiene la posición relativa de la banda dentro del control DataGridView.

(Heredado de DataGridViewBand)
InheritedAutoSizeMode

Obtiene el modo de ajuste de tamaño en vigor para la columna.

(Heredado de DataGridViewColumn)
InheritedStyle

Obtiene el estilo de celda aplicado actualmente a la columna.

(Heredado de DataGridViewColumn)
IsDataBound

Obtiene un valor que indica si la columna está enlazada a un origen de datos.

(Heredado de DataGridViewColumn)
IsRow

Obtiene un valor que indica si la banda representa una fila.

(Heredado de DataGridViewBand)
MinimumWidth

Obtiene o establece el ancho mínimo, en píxeles, de la columna.

(Heredado de DataGridViewColumn)
Name

Obtiene o establece el nombre de la columna.

(Heredado de DataGridViewColumn)
ReadOnly

Obtiene o establece un valor que indica si el usuario puede editar las celdas de la columna.

(Heredado de DataGridViewColumn)
Resizable

Obtiene o establece un valor que indica si se puede cambiar el tamaño de la columna.

(Heredado de DataGridViewColumn)
Selected

Obtiene o establece un valor que indica si la banda está en un estado seleccionado de la interfaz de usuario (UI).

(Heredado de DataGridViewBand)
Site

Obtiene o establece el sitio de la columna.

(Heredado de DataGridViewColumn)
SortMode

Obtiene o establece el modo de ordenación de la columna.

(Heredado de DataGridViewColumn)
State

Obtiene el estado de la interfaz de usuario del elemento.

(Heredado de DataGridViewElement)
Tag

Obtiene o establece el objeto que contiene datos para asociar a la banda.

(Heredado de DataGridViewBand)
Text

Obtiene o establece el texto mostrado de manera predeterminada en el botón de barra de herramientas.

ToolTipText

Obtiene o establece el texto que se utiliza como información sobre herramientas.

(Heredado de DataGridViewColumn)
UseColumnTextForButtonValue

Obtiene o establece un valor que indica si el valor de la propiedad Text se muestra como el texto del botón para las celdas de esta columna.

ValueType

Obtiene o establece el tipo de datos de los valores de las celdas de la columna.

(Heredado de DataGridViewColumn)
Visible

Obtiene o establece un valor que indica si la columna está visible.

(Heredado de DataGridViewColumn)
Width

Obtiene o establece el ancho actual de la columna.

(Heredado de DataGridViewColumn)

Métodos

Clone()

Crea una copia exacta de esta columna.

Dispose()

Libera todos los recursos que usa DataGridViewBand.

(Heredado de DataGridViewBand)
Dispose(Boolean)

Libera los recursos no administrados que usa DataGridViewBand y, de forma opcional, libera los recursos administrados.

(Heredado de DataGridViewColumn)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

Calcula el ancho ideal de la columna basándose en los criterios especificados.

(Heredado de DataGridViewColumn)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnDataGridViewChanged()

Se llama cuando la banda está asociada a un DataGridView diferente.

(Heredado de DataGridViewBand)
RaiseCellClick(DataGridViewCellEventArgs)

Genera el evento CellClick.

(Heredado de DataGridViewElement)
RaiseCellContentClick(DataGridViewCellEventArgs)

Genera el evento CellContentClick.

(Heredado de DataGridViewElement)
RaiseCellContentDoubleClick(DataGridViewCellEventArgs)

Genera el evento CellContentDoubleClick.

(Heredado de DataGridViewElement)
RaiseCellValueChanged(DataGridViewCellEventArgs)

Genera el evento CellValueChanged.

(Heredado de DataGridViewElement)
RaiseDataError(DataGridViewDataErrorEventArgs)

Genera el evento DataError.

(Heredado de DataGridViewElement)
RaiseMouseWheel(MouseEventArgs)

Genera el evento MouseWheel.

(Heredado de DataGridViewElement)
ToString()

Obtiene una cadena que describe la columna.

Eventos

Disposed

Se produce cuando se desecha DataGridViewColumn.

(Heredado de DataGridViewColumn)

Se aplica a

Consulte también