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) |