Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

DataGridViewButtonColumn-Klasse

Aktualisiert: November 2007

Enthält eine Auflistung von DataGridViewButtonCell-Objekten.

Namespace:  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

Die DataGridViewButtonColumn-Klasse ist ein spezialisierter Typ der DataGridViewColumn-Klasse, die als logischer Host von Zellen verwendet wird, die auf eine einfache Benutzereingabe reagieren. Eine DataGridViewButtonColumn verfügt in jeder DataGridViewRow, mit der sie eine gemeinsame Schnittmenge bildet, über eine zugeordnete DataGridViewButtonCell. Jede Zelle stellt eine einem Button-Steuerelement ähnliche Benutzeroberfläche bereit.

Wenn Sie für jede Zelle denselben Schaltflächentext anzeigen möchten, legen Sie die UseColumnTextForButtonValue-Eigenschaft auf true fest, und legen Sie die Text-Eigenschaft auf den gewünschten Schaltflächentext fest.

Der Standardsortiermodus für diesen Spaltentyp ist NotSortable.

Um auf das Klicken auf eine Schaltfläche durch den Benutzer zu reagieren, behandeln Sie das DataGridView.CellClick-Ereignis oder das DataGridView.CellContentClick-Ereignis. Im Ereignishandler können Sie mit der DataGridViewCellEventArgs.ColumnIndex-Eigenschaft ermitteln, ob in die Schaltflächenspalte geklickt wurde. Mithilfe der DataGridViewCellEventArgs.RowIndex-Eigenschaft können Sie ermitteln, ob auf eine Schaltflächenzelle oder auf die Spaltenüberschrift geklickt wurde.

wtfa53zf.alert_note(de-de,VS.90).gifHinweis:

Wenn visuelle Stile aktiviert sind, werden die Schaltflächen in einer Schaltflächenspalte mit einem ButtonRenderer gezeichnet, und über Eigenschaften wie DefaultCellStyle angegebene Zellenstile haben keine Auswirkungen.

Hinweise zur Vererbung:

Wenn Sie aus DataGridViewButtonColumn ableiten und der abgeleiteten Klasse neue Eigenschaften hinzufügen, muss die Clone-Methode überschrieben werden, damit die neuen Eigenschaften während der Klonvorgänge kopiert werden. Sie sollten auch die Clone-Methode der Basisklasse aufrufen, damit die Eigenschaften der Basisklasse in die neue Zelle kopiert werden.

Im folgenden Codebeispiel wird veranschaulicht, wie eine DataGridViewButtonColumn verwendet wird, um Aktionen für bestimmte Zeilen auszuführen. In diesem Beispiel bestimmt ein DataGridView.CellClick-Ereignishandler zuerst, ob auf eine Schaltflächenzelle geklickt wurde. Anschließend wird ein Geschäftsobjekt abgerufen, das der Zeile zugeordnet ist. Dieses Beispiel ist Teil eines umfangreicheren Beispiels in Gewusst wie: Zugreifen auf Objekte in einer Windows Forms-DataGridViewComboBoxCell-Dropdownliste.

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

}


Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

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 und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0
Anzeigen: