Condividi tramite


DataGridViewButtonColumn Classe

Definizione

Contiene un insieme di oggetti 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
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 gestore eventi determina innanzitutto se un DataGridView.CellClick clic è in 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 all'input utente semplice. Un oggetto DataGridViewButtonColumn ha 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 proprietà su true e impostare la UseColumnTextForButtonValueText 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 usare la DataGridViewCellEventArgs.ColumnIndex proprietà per determinare se si è verificato il clic nella colonna del pulsante. È possibile usare la proprietà per determinare se il DataGridViewCellEventArgs.RowIndex clic si è verificato in una cella del pulsante e non nell'intestazione della colonna.

Nota

Quando gli stili di visualizzazione sono abilitati, i pulsanti in una colonna del pulsante vengono dipinti usando uno ButtonRendererstile di cella e specificati tramite proprietà, ad esempio 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 Clone() classe base in modo che le proprietà della classe di base vengano copiate nella nuova cella.

Costruttori

DataGridViewButtonColumn()

Inizializza una nuova istanza della classe DataGridViewButtonColumn in base allo stato predefinito.

Proprietà

AutoSizeMode

Ottiene o imposta la modalità usata per la regolazione automatica della larghezza della colonna.

(Ereditato da DataGridViewColumn)
CellTemplate

Ottiene o imposta il modello usato per la creazione di 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 controllo DataGridView associato a questo elemento.

(Ereditato da DataGridViewElement)
DataPropertyName

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

(Ereditato da DataGridViewColumn)
DefaultCellStyle

Ottiene o imposta lo stile predefinito per le celle della colonna.

DefaultHeaderCellType

Ottiene o imposta il tipo in fase di esecuzione 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 relativa alle colonne attualmente visualizzate.

(Ereditato da DataGridViewColumn)
DividerWidth

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

(Ereditato da DataGridViewColumn)
FillWeight

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

(Ereditato da DataGridViewColumn)
FlatStyle

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

Frozen

Ottiene o imposta un valore che indica se una colonna si sposterà quando l'utente scorre orizzontalmente il controllo DataGridView.

(Ereditato da DataGridViewColumn)
HasDefaultCellStyle

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

(Ereditato da DataGridViewBand)
HeaderCell

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

(Ereditato da DataGridViewColumn)
HeaderCellCore

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

(Ereditato da DataGridViewBand)
HeaderText

Ottiene o imposta il testo del titolo sulla cella di intestazione della colonna.

(Ereditato da DataGridViewColumn)
Index

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

(Ereditato da DataGridViewBand)
InheritedAutoSizeMode

Ottiene la modalità di dimensionamento attiva per la riga.

(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, 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 è correntemente selezionata nell'interfaccia utente.

(Ereditato da DataGridViewBand)
Site

Ottiene o imposta il sito della colonna.

(Ereditato da DataGridViewColumn)
SortMode

Ottiene o imposta la modalità di ordinamento della colonna.

(Ereditato da DataGridViewColumn)
State

Ottiene lo stato dell'interfaccia utente dell'elemento.

(Ereditato da DataGridViewElement)
Tag

Ottiene o imposta l'oggetto contenente i dati da associare alla banda.

(Ereditato da DataGridViewBand)
Text

Ottiene o imposta il testo predefinito visualizzato sulla cella pulsante.

ToolTipText

Ottiene o imposta il testo usato per la descrizione comandi.

(Ereditato da DataGridViewColumn)
UseColumnTextForButtonValue

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

ValueType

Ottiene o imposta il tipo di dati dei valori delle 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

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, 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 l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnDataGridViewChanged()

Viene chiamato quando la banda è associata a un oggetto DataGridView differente.

(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

Disposed

Si verifica quando viene eliminato l'oggetto DataGridViewColumn.

(Ereditato da DataGridViewColumn)

Si applica a

Vedi anche