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
[System.Drawing.ToolboxBitmap(typeof(System.Windows.Forms.DataGridViewButtonColumn), "DataGridViewButtonColumn.bmp")]
public class DataGridViewButtonColumn : System.Windows.Forms.DataGridViewColumn
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 フォーム 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 には、それと交差するすべての DataGridViewRow に関連付けられた DataGridViewButtonCell があります。A DataGridViewButtonColumn has an associated DataGridViewButtonCell in every DataGridViewRow that intersects it. 各セルには、Button コントロールに似たユーザーインターフェイス (UI) が用意されています。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

バンドが、選択されたユーザー インターフェイス (UI) 状態かどうかを示す値を取得または設定します。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

要素のユーザー インターフェイス (UI) の状態を取得します。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)

適用対象

こちらもご覧ください