Esporta (0) Stampa
Espandi tutto
Questo argomento non è stato ancora valutato - Valuta questo argomento

Classe DataGridViewButtonColumn

Aggiornamento: novembre 2007

Contiene un insieme di oggetti DataGridViewButtonCell.

Spazio dei nomi:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

[ToolboxBitmapAttribute(typeof(DataGridViewButtonColumn), "DataGridViewButtonColumn.bmp")]
public class DataGridViewButtonColumn : DataGridViewColumn
/** @attribute ToolboxBitmapAttribute(DataGridViewButtonColumn, "DataGridViewButtonColumn.bmp") */
public class DataGridViewButtonColumn extends DataGridViewColumn
public class DataGridViewButtonColumn extends DataGridViewColumn

La classe DataGridViewButtonColumn è un tipo specializzato della classe DataGridViewColumn utilizzato per contenere logicamente celle che rispondono a un semplice input dell'utente. DataGridViewButtonColumn contiene un oggetto DataGridViewButtonCell associato in ogni DataGridViewRow che interseca la colonna. Ciascuna cella fornisce un'interfaccia utente simile a un controllo Button.

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

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

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

Nota:

Quando gli stili di visualizzazione sono attivati, i pulsanti in una colonna di pulsanti vengono disegnati utilizzando un ButtonRenderer e gli stili della cella specificati tramite le proprietà, quali DefaultCellStyle, non hanno alcun effetto.

Note per gli eredi:

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

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare DataGridViewButtonColumn per eseguire azioni su una determinata riga. Un gestore eventi DataGridView.CellClick determina innanzitutto se si è verificato un clic in una cella di pulsanti, quindi recupera un oggetto business associato alla riga. Questo esempio fa parte di un esempio più esaustivo disponibile in Procedura: accedere egli oggetti in un elenco a discesa DataGridViewComboBoxCell Windows Form.

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");
        }
    }

}


Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition , Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0
Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft. Tutti i diritti riservati.