Condividi tramite


DataGridViewButtonColumn Classe

Definizione

Ospita una raccolta di DataGridViewButtonCell oggetti .

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.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
[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")]
public class DataGridViewButtonColumn : System.Windows.Forms.DataGridViewColumn
[<System.Drawing.ToolboxBitmap(typeof(System.Windows.Forms.DataGridViewButtonColumn), "DataGridViewButtonColumn.bmp")>]
type DataGridViewButtonColumn = class
    inherit DataGridViewColumn
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)>]
[<System.Drawing.ToolboxBitmap(typeof(System.Windows.Forms.DataGridViewButtonColumn), "DataGridViewButtonColumn")>]
type DataGridViewButtonColumn = class
    inherit DataGridViewColumn
[<System.Drawing.ToolboxBitmap(typeof(System.Windows.Forms.DataGridViewButtonColumn), "DataGridViewButtonColumn")>]
type DataGridViewButtonColumn = class
    inherit DataGridViewColumn
Public Class DataGridViewButtonColumn
Inherits DataGridViewColumn
Ereditarietà
Attributi

Esempio

Nell'esempio di codice seguente viene illustrato come usare un DataGridViewButtonColumn oggetto per eseguire azioni su righe specifiche. In questo esempio, un DataGridView.CellClick gestore eventi determina innanzitutto se un clic si trova su una cella del pulsante, quindi recupera un oggetto business associato alla riga. Questo esempio fa parte di un esempio più ampio disponibile 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");
        }
    }
}
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

Commenti

La DataGridViewButtonColumn classe è un tipo specializzato della DataGridViewColumn classe usata per ospitare logicamente le celle che rispondono a un input utente semplice. A DataGridViewButtonColumn un oggetto è associato DataGridViewButtonCell in ogni DataGridViewRow oggetto che lo interseca. Ogni cella fornisce un'interfaccia utente simile a un Button controllo.

Per visualizzare lo stesso testo del pulsante per ogni cella, impostare la UseColumnTextForButtonValue proprietà su true e impostare la Text proprietà sul testo del pulsante desiderato.

La modalità di ordinamento predefinita per questo tipo di colonna è NotSortable.

Per rispondere ai clic del pulsante utente, gestire l'evento DataGridView.CellClick o DataGridView.CellContentClick . Nel gestore eventi è possibile utilizzare la DataGridViewCellEventArgs.ColumnIndex proprietà per determinare se il clic si è verificato nella colonna del pulsante. È possibile utilizzare la DataGridViewCellEventArgs.RowIndex proprietà per determinare se il clic si è verificato in una cella del pulsante e non nell'intestazione di colonna.

Annotazioni

Quando gli stili di visualizzazione sono abilitati, i pulsanti di una colonna pulsante vengono disegnati usando uno ButtonRendererstile di cella e specificati tramite proprietà come DefaultCellStyle non hanno alcun effetto.

Note per gli eredi

Quando si deriva da DataGridViewButtonColumn e si aggiungono nuove proprietà alla classe derivata, assicurarsi di eseguire l'override del Clone() metodo per copiare le nuove proprietà durante le operazioni di clonazione. È anche necessario chiamare il metodo della classe base Clone() in modo che le proprietà della classe di base vengano copiate nella nuova cella.

Costruttori

Nome Descrizione
DataGridViewButtonColumn()

Inizializza una nuova istanza della DataGridViewButtonColumn classe sullo stato predefinito.

Proprietà

Nome Descrizione
AutoSizeMode

Ottiene o imposta la modalità in base alla quale la colonna regola automaticamente la larghezza.

(Ereditato da DataGridViewColumn)
CellTemplate

Ottiene o imposta il modello utilizzato per creare nuove celle.

CellType

Ottiene il tipo di runtime del modello di cella.

(Ereditato da DataGridViewColumn)
ContextMenuStrip

Ottiene o imposta il menu di scelta rapida per la colonna.

(Ereditato da DataGridViewColumn)
DataGridView

Ottiene il DataGridView controllo associato a questo elemento.

(Ereditato da DataGridViewElement)
DataPropertyName

Ottiene o imposta il nome della proprietà dell'origine dati o della colonna di database a cui è associato .DataGridViewColumn

(Ereditato da DataGridViewColumn)
DefaultCellStyle

Ottiene o imposta lo stile predefinito della cella della colonna.

DefaultHeaderCellType

Ottiene o imposta il tipo di runtime della cella di intestazione predefinita.

(Ereditato da DataGridViewBand)
Displayed

Ottiene un valore che indica se la banda è attualmente visualizzata sullo schermo.

(Ereditato da DataGridViewBand)
DisplayIndex

Ottiene o imposta l'ordine di visualizzazione della colonna rispetto alle colonne attualmente visualizzate.

(Ereditato da DataGridViewColumn)
DividerWidth

Ottiene o imposta la larghezza, espressa in pixel, del divisore di colonna.

(Ereditato da DataGridViewColumn)
FillWeight

Ottiene o imposta un valore che rappresenta la larghezza della colonna quando è in modalità di riempimento rispetto alle larghezze di altre colonne in modalità riempimento nel controllo .

(Ereditato da DataGridViewColumn)
FlatStyle

Ottiene o imposta l'aspetto flat delle celle del pulsante nella colonna.

Frozen

Ottiene o imposta un valore che indica se una colonna verrà spostata quando un utente scorre il DataGridView controllo orizzontalmente.

(Ereditato da DataGridViewColumn)
HasDefaultCellStyle

Ottiene un valore che indica se la DefaultCellStyle proprietà è stata impostata.

(Ereditato da DataGridViewBand)
HeaderCell

Ottiene o imposta l'oggetto DataGridViewColumnHeaderCell che rappresenta l'intestazione di colonna.

(Ereditato da DataGridViewColumn)
HeaderCellCore

Ottiene o imposta la cella di intestazione dell'oggetto DataGridViewBand.

(Ereditato da DataGridViewBand)
HeaderText

Ottiene o imposta il testo della didascalia nella cella di intestazione della colonna.

(Ereditato da DataGridViewColumn)
Index

Ottiene la posizione relativa della banda all'interno del DataGridView controllo .

(Ereditato da DataGridViewBand)
InheritedAutoSizeMode

Ottiene la modalità di ridimensionamento attiva per la colonna.

(Ereditato da DataGridViewColumn)
InheritedStyle

Ottiene lo stile della cella attualmente applicato alla colonna.

(Ereditato da DataGridViewColumn)
IsDataBound

Ottiene un valore che indica se la colonna è associata a un'origine dati.

(Ereditato da DataGridViewColumn)
IsRow

Ottiene un valore che indica se la banda rappresenta una riga.

(Ereditato da DataGridViewBand)
MinimumWidth

Ottiene o imposta la larghezza minima, espressa in pixel, della colonna.

(Ereditato da DataGridViewColumn)
Name

Ottiene o imposta il nome della colonna.

(Ereditato da DataGridViewColumn)
ReadOnly

Ottiene o imposta un valore che indica se l'utente può modificare le celle della colonna.

(Ereditato da DataGridViewColumn)
Resizable

Ottiene o imposta un valore che indica se la colonna è ridimensionabile.

(Ereditato da DataGridViewColumn)
Selected

Ottiene o imposta un valore che indica se la banda si trova in uno stato dell'interfaccia utente selezionato.

(Ereditato da DataGridViewBand)
Site

Ottiene o imposta il sito della colonna.

(Ereditato da DataGridViewColumn)
SortMode

Ottiene o imposta la modalità di ordinamento per la colonna.

(Ereditato da DataGridViewColumn)
State

Ottiene lo stato dell'interfaccia utente dell'elemento.

(Ereditato da DataGridViewElement)
Tag

Ottiene o imposta l'oggetto che contiene dati da associare alla banda.

(Ereditato da DataGridViewBand)
Text

Ottiene o imposta il testo predefinito visualizzato nella cella del pulsante.

ToolTipText

Ottiene o imposta il testo utilizzato per le descrizioni comandi.

(Ereditato da DataGridViewColumn)
UseColumnTextForButtonValue

Ottiene o imposta un valore che indica se il valore della Text proprietà viene visualizzato come testo del pulsante per le celle di questa colonna.

ValueType

Ottiene o imposta il tipo di dati dei valori nelle celle della colonna.

(Ereditato da DataGridViewColumn)
Visible

Ottiene o imposta un valore che indica se la colonna è visibile.

(Ereditato da DataGridViewColumn)
Width

Ottiene o imposta la larghezza corrente della colonna.

(Ereditato da DataGridViewColumn)

Metodi

Nome Descrizione
Clone()

Crea una copia esatta di questa colonna.

Dispose()

Rilascia tutte le risorse usate da DataGridViewBand.

(Ereditato da DataGridViewBand)
Dispose(Boolean)

Rilascia le risorse non gestite usate da DataGridViewBand e, facoltativamente, rilascia le risorse gestite.

(Ereditato da DataGridViewColumn)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

Calcola la larghezza ideale della colonna in base ai criteri specificati.

(Ereditato da DataGridViewColumn)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
OnDataGridViewChanged()

Chiamato quando la banda è associata a un oggetto diverso DataGridView.

(Ereditato da DataGridViewBand)
RaiseCellClick(DataGridViewCellEventArgs)

Genera l'evento CellClick.

(Ereditato da DataGridViewElement)
RaiseCellContentClick(DataGridViewCellEventArgs)

Genera l'evento CellContentClick.

(Ereditato da DataGridViewElement)
RaiseCellContentDoubleClick(DataGridViewCellEventArgs)

Genera l'evento CellContentDoubleClick.

(Ereditato da DataGridViewElement)
RaiseCellValueChanged(DataGridViewCellEventArgs)

Genera l'evento CellValueChanged.

(Ereditato da DataGridViewElement)
RaiseDataError(DataGridViewDataErrorEventArgs)

Genera l'evento DataError.

(Ereditato da DataGridViewElement)
RaiseMouseWheel(MouseEventArgs)

Genera l'evento MouseWheel.

(Ereditato da DataGridViewElement)
ToString()

Ottiene una stringa che descrive la colonna.

Eventi

Nome Descrizione
Disposed

Si verifica quando l'oggetto DataGridViewColumn viene eliminato.

(Ereditato da DataGridViewColumn)

Si applica a

Vedi anche