DataGridViewButtonColumn Класс

Определение

Размещает коллекцию объектов DataGridViewButtonCell.Hosts a collection of DataGridViewButtonCell objects.

public ref class DataGridViewButtonColumn : System::Windows::Forms::DataGridViewColumn
[System.Drawing.ToolboxBitmap(typeof(System.Windows.Forms.DataGridViewButtonColumn), "DataGridViewButtonColumn")]
public class DataGridViewButtonColumn : System.Windows.Forms.DataGridViewColumn
public 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")>]
type DataGridViewButtonColumn = class
    inherit DataGridViewColumn
type DataGridViewButtonColumn = class
    inherit DataGridViewColumn
[<System.Drawing.ToolboxBitmap(typeof(System.Windows.Forms.DataGridViewButtonColumn), "DataGridViewButtonColumn.bmp")>]
type DataGridViewButtonColumn = class
    inherit DataGridViewColumn
Public Class DataGridViewButtonColumn
Inherits DataGridViewColumn
Наследование
Атрибуты

Примеры

В следующем примере кода показано, как использовать DataGridViewButtonColumn для выполнения действий с определенными строками.The following code example demonstrates how to use a DataGridViewButtonColumn to perform actions on particular rows. В этом примере DataGridView.CellClick обработчик событий сначала определяет, находится ли щелчок в ячейке кнопки, а затем извлекает бизнес-объект, связанный со строкой.In this example, a DataGridView.CellClick event handler first determines whether a click is on a button cell, then retrieves a business object associated with the row. Этот пример является частью большого примера, доступного в разделе как получить доступ к объектам в раскрывающемся списке Windows Forms DataGridViewComboBoxCell.This example is part of a larger example available 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

Комментарии

DataGridViewButtonColumnКласс является специализированным типом DataGridViewColumn класса, который используется для логического размещения ячеек, реагирующих на простые входные данные пользователя.The DataGridViewButtonColumn class is a specialized type of the DataGridViewColumn class used to logically host cells that respond to simple user input. DataGridViewButtonColumnУ объекта есть связанный объект DataGridViewButtonCell DataGridViewRow , который пересекает его.A DataGridViewButtonColumn has an associated DataGridViewButtonCell in every DataGridViewRow that intersects it. Каждая ячейка предоставляет пользовательский интерфейс, аналогичный Button элементу управления.Each cell supplies a user interface (UI) that is similar to a Button control.

Чтобы отобразить один и тот же текст кнопки для каждой ячейки, задайте UseColumnTextForButtonValue для свойства значение true и задайте Text для свойства нужный текст кнопки.To display the same button text for every cell, set the UseColumnTextForButtonValue property to true and set the Text property to the desired button text.

По умолчанию для этого типа столбца используется режим сортировки NotSortable .The default sort mode for this column type is NotSortable.

Чтобы реагировать на нажатия кнопок пользователя, обрабатывайте DataGridView.CellClick DataGridView.CellContentClick событие или.To respond to user button clicks, handle the DataGridView.CellClick or DataGridView.CellContentClick event. В обработчике событий можно использовать DataGridViewCellEventArgs.ColumnIndex свойство, чтобы определить, произошло ли нажатие кнопки в столбце кнопки.In the event handler, you can use the DataGridViewCellEventArgs.ColumnIndex property to determine whether the click occurred in the button column. Свойство можно использовать DataGridViewCellEventArgs.RowIndex для определения того, произошла ли щелчок в ячейке кнопки, а не в заголовке столбца.You can use the DataGridViewCellEventArgs.RowIndex property to determine whether the click occurred in a button cell and not on the column header.

Примечание

Когда визуальные стили включены, кнопки в столбце кнопки рисуются с помощью ButtonRenderer , а стили ячеек, заданные с помощью свойств, таких как, DefaultCellStyle не оказывают никакого влияния.When visual styles are enabled, the buttons in a button column are painted using a ButtonRenderer, and cell styles specified through properties such as DefaultCellStyle have no effect.

Примечания для тех, кто наследует этот метод

При наследовании от DataGridViewButtonColumn и добавлении новых свойств в производный класс обязательно Переопределите Clone() метод, чтобы скопировать новые свойства во время операций клонирования.When you derive from DataGridViewButtonColumn and add new properties to the derived class, be sure to override the Clone() method to copy the new properties during cloning operations. Также следует вызвать метод базового класса, Clone() чтобы свойства базового класса копировались в новую ячейку.You should also call the base class's Clone() method so that the properties of the base class are copied to the new cell.

Конструкторы

DataGridViewButtonColumn()

Инициализирует новый экземпляр класса DataGridViewButtonColumn, устанавливая его в состояние по умолчанию.Initializes a new instance of the DataGridViewButtonColumn class to the default state.

Свойства

AutoSizeMode

Возвращает или задает режим, в котором автоматически изменяется ширина столбца.Gets or sets the mode by which the column automatically adjusts its width.

(Унаследовано от DataGridViewColumn)
CellTemplate

Возвращает или задает шаблон, используемый для создания ячеек.Gets or sets the template used to create new cells.

CellType

Возвращает тип времени выполнения шаблона ячеек.Gets the run-time type of the cell template.

(Унаследовано от DataGridViewColumn)
ContextMenuStrip

Возвращает или задает контекстное меню для столбца.Gets or sets the shortcut menu for the column.

(Унаследовано от DataGridViewColumn)
DataGridView

Получает элемент управления DataGridView, связанный с данным элементом.Gets the DataGridView control associated with this element.

(Унаследовано от DataGridViewElement)
DataPropertyName

Возвращает или задает имя того свойства данных или столбца базы данных в источнике данных, с которым связан столбец DataGridViewColumn.Gets or sets the name of the data source property or database column to which the DataGridViewColumn is bound.

(Унаследовано от DataGridViewColumn)
DefaultCellStyle

Возвращает или задает стиль по умолчанию для ячеек столбца.Gets or sets the column's default cell style.

DefaultHeaderCellType

Получает или задает тип времени выполнения для ячейки заголовка по умолчанию.Gets or sets the run-time type of the default header cell.

(Унаследовано от DataGridViewBand)
Displayed

Получает значение, показывающее, отображается ли диапазон на экране в данный момент.Gets a value indicating whether the band is currently displayed onscreen.

(Унаследовано от DataGridViewBand)
DisplayIndex

Возвращает или задает расположение столбца относительно столбцов, отображаемых в текущий момент.Gets or sets the display order of the column relative to the currently displayed columns.

(Унаследовано от DataGridViewColumn)
DividerWidth

Возвращает или задает ширину (в пикселях) разделителя столбца.Gets or sets the width, in pixels, of the column divider.

(Унаследовано от DataGridViewColumn)
FillWeight

Возвращает или задает значение, представляющее ширину столбца, находящегося в режиме заполнения, относительно ширины других столбцов элемента управления, находящихся в этом режиме.Gets or sets a value that represents the width of the column when it is in fill mode relative to the widths of other fill-mode columns in the control.

(Унаследовано от DataGridViewColumn)
FlatStyle

Получает или задает плоский внешний вид для ячеек кнопок в столбце.Gets or sets the flat-style appearance of the button cells in the column.

Frozen

Возвращает или задает значение, указывающее, перемещается ли столбец, когда пользователь выполняет горизонтальную прокрутку элемента управления DataGridView.Gets or sets a value indicating whether a column will move when a user scrolls the DataGridView control horizontally.

(Унаследовано от DataGridViewColumn)
HasDefaultCellStyle

Получает значение, показывающее, было ли установлено свойство DefaultCellStyle.Gets a value indicating whether the DefaultCellStyle property has been set.

(Унаследовано от DataGridViewBand)
HeaderCell

Возвращает или задает объект DataGridViewColumnHeaderCell, представляющий заголовок столбца.Gets or sets the DataGridViewColumnHeaderCell that represents the column header.

(Унаследовано от DataGridViewColumn)
HeaderCellCore

Получает или задает ячейку заголовка объекта DataGridViewBand.Gets or sets the header cell of the DataGridViewBand.

(Унаследовано от DataGridViewBand)
HeaderText

Возвращает или задает текст ячейки заголовка столбца.Gets or sets the caption text on the column's header cell.

(Унаследовано от DataGridViewColumn)
Index

Получает относительную позицию диапазона в элементе управления DataGridView.Gets the relative position of the band within the DataGridView control.

(Унаследовано от DataGridViewBand)
InheritedAutoSizeMode

Возвращает или задает режим изменения размера, действующий для столбца.Gets the sizing mode in effect for the column.

(Унаследовано от DataGridViewColumn)
InheritedStyle

Возвращает стиль ячейки, применяемый в текущий момент к столбцу.Gets the cell style currently applied to the column.

(Унаследовано от DataGridViewColumn)
IsDataBound

Возвращает значение, указывающее, связан ли столбец с источником данных.Gets a value indicating whether the column is bound to a data source.

(Унаследовано от DataGridViewColumn)
IsRow

Получает значение, показывающее, представляет ли диапазон строку.Gets a value indicating whether the band represents a row.

(Унаследовано от DataGridViewBand)
MinimumWidth

Возвращает или задает наименьшую ширину столбца (в пикселях).Gets or sets the minimum width, in pixels, of the column.

(Унаследовано от DataGridViewColumn)
Name

Возвращает или задает имя столбца.Gets or sets the name of the column.

(Унаследовано от DataGridViewColumn)
ReadOnly

Возвращает или задает значение, указывающее, может ли пользователь изменять ячейки столбца.Gets or sets a value indicating whether the user can edit the column's cells.

(Унаследовано от DataGridViewColumn)
Resizable

Возвращает или задает значение, указывающее, возможно ли изменение размера столбца.Gets or sets a value indicating whether the column is resizable.

(Унаследовано от DataGridViewColumn)
Selected

Получает или задает значение, показывающее, выделен ли диапазон в пользовательском интерфейсе.Gets or sets a value indicating whether the band is in a selected user interface (UI) state.

(Унаследовано от DataGridViewBand)
Site

Возвращает или задает подложку столбца.Gets or sets the site of the column.

(Унаследовано от DataGridViewColumn)
SortMode

Возвращает или задает режим сортировки для столбца.Gets or sets the sort mode for the column.

(Унаследовано от DataGridViewColumn)
State

Получает состояние пользовательского интерфейса для элемента.Gets the user interface (UI) state of the element.

(Унаследовано от DataGridViewElement)
Tag

Получает или задает объект, содержащий данные, связанные с диапазоном.Gets or sets the object that contains data to associate with the band.

(Унаследовано от DataGridViewBand)
Text

Получает или задает текст, отображаемый на ячейке кнопки по умолчанию.Gets or sets the default text displayed on the button cell.

ToolTipText

Возвращает или задает текст, используемый для подсказок.Gets or sets the text used for ToolTips.

(Унаследовано от DataGridViewColumn)
UseColumnTextForButtonValue

Получает или задает значение, указывающее, отображается ли значение свойства Text как текст на кнопках, которые содержат ячейки в данном столбце.Gets or sets a value indicating whether the Text property value is displayed as the button text for cells in this column.

ValueType

Возвращает или задает тип данных для значений в ячейках столбца.Gets or sets the data type of the values in the column's cells.

(Унаследовано от DataGridViewColumn)
Visible

Возвращает или задает значение, показывающее, видим ли столбец.Gets or sets a value indicating whether the column is visible.

(Унаследовано от DataGridViewColumn)
Width

Возвращает или задает текущую ширину столбца.Gets or sets the current width of the column.

(Унаследовано от DataGridViewColumn)

Методы

Clone()

Создает точную копию этого столбца.Creates an exact copy of this column.

Dispose()

Освобождает все ресурсы, занятые модулем DataGridViewBand.Releases all resources used by the DataGridViewBand.

(Унаследовано от DataGridViewBand)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом DataGridViewBand, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the DataGridViewBand and optionally releases the managed resources.

(Унаследовано от DataGridViewColumn)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

Вычисляет оптимальную ширину столбца на основе указанных критериев.Calculates the ideal width of the column based on the specified criteria.

(Унаследовано от DataGridViewColumn)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
OnDataGridViewChanged()

Вызывается, когда диапазон связан с другим элементом управления DataGridView.Called when the band is associated with a different DataGridView.

(Унаследовано от DataGridViewBand)
RaiseCellClick(DataGridViewCellEventArgs)

Вызывает событие CellClick.Raises the CellClick event.

(Унаследовано от DataGridViewElement)
RaiseCellContentClick(DataGridViewCellEventArgs)

Вызывает событие CellContentClick.Raises the CellContentClick event.

(Унаследовано от DataGridViewElement)
RaiseCellContentDoubleClick(DataGridViewCellEventArgs)

Вызывает событие CellContentDoubleClick.Raises the CellContentDoubleClick event.

(Унаследовано от DataGridViewElement)
RaiseCellValueChanged(DataGridViewCellEventArgs)

Вызывает событие CellValueChanged.Raises the CellValueChanged event.

(Унаследовано от DataGridViewElement)
RaiseDataError(DataGridViewDataErrorEventArgs)

Вызывает событие DataError.Raises the DataError event.

(Унаследовано от DataGridViewElement)
RaiseMouseWheel(MouseEventArgs)

Вызывает событие MouseWheel.Raises the MouseWheel event.

(Унаследовано от DataGridViewElement)
ToString()

Возвращает строку, описывающую столбец.Gets a string that describes the column.

События

Disposed

Происходит при удалении объекта DataGridViewColumn.Occurs when the DataGridViewColumn is disposed.

(Унаследовано от DataGridViewColumn)

Применяется к

См. также раздел