DataGridViewButtonColumn Klass

Definition

Är värd för en samling DataGridViewButtonCell objekt.

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
Arv
Attribut

Exempel

Följande kodexempel visar hur du använder en DataGridViewButtonColumn för att utföra åtgärder på vissa rader. I det här exemplet avgör en DataGridView.CellClick händelsehanterare först om ett klick finns i en knappcell och hämtar sedan ett affärsobjekt som är associerat med raden. Det här exemplet är en del av ett större exempel i 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

Kommentarer

Klassen DataGridViewButtonColumn är en specialiserad typ av klassen DataGridViewColumn som används för att logiskt vara värd för celler som svarar på enkla användarindata. A DataGridViewButtonColumn har en associerad DataGridViewButtonCell i varje DataGridViewRow som korsar den. Varje cell tillhandahåller ett användargränssnitt (UI) som liknar en Button kontroll.

Om du vill visa samma knapptext för varje cell anger du UseColumnTextForButtonValue egenskapen till true och anger Text egenskapen till önskad knapptext.

Standardsorteringsläget för den här kolumntypen är NotSortable.

Om du vill svara på klick på användarknappar hanterar du DataGridView.CellClick händelsen eller DataGridView.CellContentClick . I händelsehanteraren kan du använda DataGridViewCellEventArgs.ColumnIndex egenskapen för att avgöra om klicket inträffade i knappkolumnen. Du kan använda DataGridViewCellEventArgs.RowIndex egenskapen för att avgöra om klicket inträffade i en knappcell och inte i kolumnrubriken.

Note

När visuella format är aktiverade målas knapparna i en knappkolumn med hjälp av en ButtonRenderer, och cellformat som anges via egenskaper som DefaultCellStyle inte har någon effekt.

Anteckningar till arvingar

När du härleder från DataGridViewButtonColumn och lägger till nya egenskaper i den härledda klassen måste du åsidosätta Clone() metoden för att kopiera de nya egenskaperna under kloningsåtgärderna. Du bör också anropa basklassens Clone() metod så att egenskaperna för basklassen kopieras till den nya cellen.

Konstruktorer

Name Description
DataGridViewButtonColumn()

Initierar en ny instans av DataGridViewButtonColumn klassen till standardtillståndet.

Egenskaper

Name Description
AutoSizeMode

Hämtar eller anger det läge med vilket kolumnen automatiskt justerar sin bredd.

(Ärvd från DataGridViewColumn)
CellTemplate

Hämtar eller anger mallen som används för att skapa nya celler.

CellType

Hämtar körningstypen för cellmallen.

(Ärvd från DataGridViewColumn)
ContextMenuStrip

Hämtar eller ställer in snabbmenyn för kolumnen.

(Ärvd från DataGridViewColumn)
DataGridView

Hämtar kontrollen DataGridView som är associerad med det här elementet.

(Ärvd från DataGridViewElement)
DataPropertyName

Hämtar eller anger namnet på den datakällegenskap eller databaskolumn som DataGridViewColumn är bunden till.

(Ärvd från DataGridViewColumn)
DefaultCellStyle

Hämtar eller anger kolumnens standardcellformat.

DefaultHeaderCellType

Hämtar eller anger körningstypen för standardhuvudcellen.

(Ärvd från DataGridViewBand)
Displayed

Hämtar ett värde som anger om bandet visas på skärmen.

(Ärvd från DataGridViewBand)
DisplayIndex

Hämtar eller anger visningsordningen för kolumnen i förhållande till de kolumner som visas för närvarande.

(Ärvd från DataGridViewColumn)
DividerWidth

Hämtar eller anger bredden i bildpunkter för kolumnavdelaren.

(Ärvd från DataGridViewColumn)
FillWeight

Hämtar eller anger ett värde som representerar kolumnens bredd när den är i fyllningsläge i förhållande till bredderna för andra fyllningslägeskolumner i kontrollen.

(Ärvd från DataGridViewColumn)
FlatStyle

Hämtar eller ställer in utseendet på knappcellerna i kolumnen i platt stil.

Frozen

Hämtar eller anger ett värde som anger om en kolumn ska flyttas när en användare rullar DataGridView kontrollen vågrätt.

(Ärvd från DataGridViewColumn)
HasDefaultCellStyle

Hämtar ett värde som anger om egenskapen DefaultCellStyle har angetts.

(Ärvd från DataGridViewBand)
HeaderCell

Hämtar eller anger DataGridViewColumnHeaderCell som representerar kolumnrubriken.

(Ärvd från DataGridViewColumn)
HeaderCellCore

Hämtar eller anger rubrikcellen i DataGridViewBand.

(Ärvd från DataGridViewBand)
HeaderText

Hämtar eller anger bildtexten i kolumnens rubrikcell.

(Ärvd från DataGridViewColumn)
Index

Hämtar bandets relativa position inom DataGridView kontrollen.

(Ärvd från DataGridViewBand)
InheritedAutoSizeMode

Hämtar storleksläget i praktiken för kolumnen.

(Ärvd från DataGridViewColumn)
InheritedStyle

Hämtar cellformatet som för närvarande tillämpas på kolumnen.

(Ärvd från DataGridViewColumn)
IsDataBound

Hämtar ett värde som anger om kolumnen är bunden till en datakälla.

(Ärvd från DataGridViewColumn)
IsRow

Hämtar ett värde som anger om bandet representerar en rad.

(Ärvd från DataGridViewBand)
MinimumWidth

Hämtar eller anger den minsta bredden, i bildpunkter, för kolumnen.

(Ärvd från DataGridViewColumn)
Name

Hämtar eller anger namnet på kolumnen.

(Ärvd från DataGridViewColumn)
ReadOnly

Hämtar eller anger ett värde som anger om användaren kan redigera kolumnens celler.

(Ärvd från DataGridViewColumn)
Resizable

Hämtar eller anger ett värde som anger om kolumnen kan ändras.

(Ärvd från DataGridViewColumn)
Selected

Hämtar eller anger ett värde som anger om bandet är i ett valt användargränssnittstillstånd (UI).

(Ärvd från DataGridViewBand)
Site

Hämtar eller anger platsen för kolumnen.

(Ärvd från DataGridViewColumn)
SortMode

Hämtar eller anger sorteringsläget för kolumnen.

(Ärvd från DataGridViewColumn)
State

Hämtar användargränssnittstillståndet (UI) för elementet.

(Ärvd från DataGridViewElement)
Tag

Hämtar eller anger det objekt som innehåller data som ska associeras med bandet.

(Ärvd från DataGridViewBand)
Text

Hämtar eller anger standardtexten som visas i knappcellen.

ToolTipText

Hämtar eller anger den text som används för Knappbeskrivningar.

(Ärvd från DataGridViewColumn)
UseColumnTextForButtonValue

Hämtar eller anger ett värde som anger om Text egenskapsvärdet visas som knapptext för celler i den här kolumnen.

ValueType

Hämtar eller anger datatypen för värdena i kolumnens celler.

(Ärvd från DataGridViewColumn)
Visible

Hämtar eller anger ett värde som anger om kolumnen är synlig.

(Ärvd från DataGridViewColumn)
Width

Hämtar eller anger kolumnens aktuella bredd.

(Ärvd från DataGridViewColumn)

Metoder

Name Description
Clone()

Skapar en exakt kopia av den här kolumnen.

Dispose()

Släpper alla resurser som används av DataGridViewBand.

(Ärvd från DataGridViewBand)
Dispose(Boolean)

Släpper de ohanterade resurser som används av DataGridViewBand och släpper eventuellt de hanterade resurserna.

(Ärvd från DataGridViewColumn)
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

Beräknar den ideala bredden för kolumnen baserat på de angivna kriterierna.

(Ärvd från DataGridViewColumn)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnDataGridViewChanged()

Anropas när bandet är associerat med en annan DataGridView.

(Ärvd från DataGridViewBand)
RaiseCellClick(DataGridViewCellEventArgs)

Genererar händelsen CellClick .

(Ärvd från DataGridViewElement)
RaiseCellContentClick(DataGridViewCellEventArgs)

Genererar händelsen CellContentClick .

(Ärvd från DataGridViewElement)
RaiseCellContentDoubleClick(DataGridViewCellEventArgs)

Genererar händelsen CellContentDoubleClick .

(Ärvd från DataGridViewElement)
RaiseCellValueChanged(DataGridViewCellEventArgs)

Genererar händelsen CellValueChanged .

(Ärvd från DataGridViewElement)
RaiseDataError(DataGridViewDataErrorEventArgs)

Genererar händelsen DataError .

(Ärvd från DataGridViewElement)
RaiseMouseWheel(MouseEventArgs)

Genererar händelsen MouseWheel .

(Ärvd från DataGridViewElement)
ToString()

Hämtar en sträng som beskriver kolumnen.

Händelser

Name Description
Disposed

Inträffar när tas DataGridViewColumn bort.

(Ärvd från DataGridViewColumn)

Gäller för

Se även