Поделиться через


DataGridViewButtonColumn Класс

Определение

Размещает коллекцию 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.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
Наследование
Атрибуты

Примеры

В следующем примере кода показано, как использовать DataGridViewButtonColumn для выполнения действий в определенных строках. В этом примере обработчик событий сначала определяет, DataGridView.CellClick находится ли щелчок в ячейке кнопки, а затем извлекает бизнес-объект, связанный с строкой. Этот пример является частью более крупного примера, доступного в разделе "Практическое руководство. Доступ к объектам в списке данных 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 для логического размещения ячеек, которые отвечают на простые входные данные пользователя. A DataGridViewButtonColumn имеет связь DataGridViewButtonCell в каждом DataGridViewRow , что пересекает его. Каждая ячейка предоставляет пользовательский интерфейс, аналогичный элементу Button управления.

Чтобы отобразить один и тот же текст кнопки для каждой ячейки, задайте UseColumnTextForButtonValue для свойства true значение и задайте Text для свойства нужный текст кнопки.

Режим сортировки по умолчанию для этого типа столбца .NotSortable

Чтобы ответить на нажатия кнопки пользователя, обработайте или DataGridView.CellContentClick событиеDataGridView.CellClick. В обработчике событий можно использовать DataGridViewCellEventArgs.ColumnIndex свойство, чтобы определить, произошла ли щелчка в столбце кнопки. Свойство можно использовать DataGridViewCellEventArgs.RowIndex для определения того, произошла ли щелчка в ячейке кнопки, а не в заголовке столбца.

Замечание

Если визуальные стили включены, кнопки в столбце кнопки окрашены с помощью стиля ячейки, указанные в ButtonRendererсвойствах, таких как DefaultCellStyle отсутствие эффекта.

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

При получении и DataGridViewButtonColumn добавлении новых свойств в производный класс обязательно переопределите Clone() метод для копирования новых свойств во время клонирования. Необходимо также вызвать метод базового класса, чтобы свойства базового класса Clone() копировались в новую ячейку.

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

Имя Описание
DataGridViewButtonColumn()

Инициализирует новый экземпляр DataGridViewButtonColumn класса в состояние по умолчанию.

Свойства

Имя Описание
AutoSizeMode

Получает или задает режим, с помощью которого столбец автоматически настраивает ширину.

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

Возвращает или задает шаблон, используемый для создания новых ячеек.

CellType

Возвращает тип времени выполнения шаблона ячейки.

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

Возвращает или задает контекстное меню для столбца.

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

Возвращает элемент управления, связанный с этим элементом DataGridView .

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

Возвращает или задает имя свойства источника данных или столбца базы данных, к которому привязан объект DataGridViewColumn .

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

Возвращает или задает стиль ячейки столбца по умолчанию.

DefaultHeaderCellType

Возвращает или задает тип времени выполнения ячейки заголовка по умолчанию.

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

Возвращает значение, указывающее, отображается ли в данный момент полоса на экране.

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

Возвращает или задает порядок отображения столбца относительно отображаемых в данный момент столбцов.

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

Возвращает или задает ширину в пикселях разделителя столбцов.

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

Возвращает или задает значение, представляющее ширину столбца, если он находится в режиме заполнения относительно ширины других столбцов режима заполнения в элементе управления.

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

Возвращает или задает внешний вид ячеек кнопки в столбце.

Frozen

Возвращает или задает значение, указывающее, будет ли столбец перемещаться, когда пользователь прокручивает DataGridView элемент управления по горизонтали.

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

Возвращает значение, указывающее, задано ли DefaultCellStyle свойство.

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

Возвращает или задает заголовок DataGridViewColumnHeaderCell столбца.

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

Возвращает или задает ячейку заголовка объекта DataGridViewBand.

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

Возвращает или задает текст заголовка в ячейке заголовка столбца.

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

Получает относительную позицию полосы в элементе DataGridView управления.

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

Возвращает режим изменения размера для столбца.

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

Возвращает стиль ячейки, применяемый к столбцу.

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

Возвращает значение, указывающее, привязан ли столбец к источнику данных.

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

Возвращает значение, указывающее, представляет ли полоса строку.

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

Возвращает или задает минимальную ширину в пикселях столбца.

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

Возвращает или задает имя столбца.

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

Возвращает или задает значение, указывающее, может ли пользователь изменять ячейки столбца.

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

Возвращает или задает значение, указывающее, можно ли изменить размер столбца.

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

Возвращает или задает значение, указывающее, находится ли полоса в выбранном состоянии пользовательского интерфейса.

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

Возвращает или задает сайт столбца.

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

Возвращает или задает режим сортировки для столбца.

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

Возвращает состояние пользовательского интерфейса элемента.

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

Возвращает или задает объект, содержащий данные для связывания с группой.

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

Возвращает или задает текст по умолчанию, отображаемый в ячейке кнопки.

ToolTipText

Возвращает или задает текст, используемый для подсказок.

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

Возвращает или задает значение, указывающее, отображается ли Text значение свойства в виде текста кнопки для ячеек в этом столбце.

ValueType

Возвращает или задает тип данных значений в ячейках столбца.

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

Возвращает или задает значение, указывающее, отображается ли столбец.

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

Возвращает или задает текущую ширину столбца.

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

Методы

Имя Описание
Clone()

Создает точную копию этого столбца.

Dispose()

Освобождает все ресурсы, используемые параметром DataGridViewBand.

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

Освобождает неуправляемые ресурсы, используемые DataGridViewBand и при необходимости освобождает управляемые ресурсы.

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

Определяет, равен ли указанный объект текущему объекту.

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

Служит хэш-функцией по умолчанию.

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

Вычисляет идеальную ширину столбца на основе указанных критериев.

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

Возвращает Type текущего экземпляра.

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

Создает неглубокую копию текущей Object.

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

Вызывается, когда группа связана с другим DataGridView.

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

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

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

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

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

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

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

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

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

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

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

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

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

Возвращает строку, описывающую столбец.

События

Имя Описание
Disposed

Происходит при DataGridViewColumn удалении.

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

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

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