DataGridViewRowContextMenuStripNeededEventArgs DataGridViewRowContextMenuStripNeededEventArgs DataGridViewRowContextMenuStripNeededEventArgs DataGridViewRowContextMenuStripNeededEventArgs Class

定義

RowContextMenuStripNeeded イベントのデータを提供します。Provides data for the RowContextMenuStripNeeded event.

public ref class DataGridViewRowContextMenuStripNeededEventArgs : EventArgs
public class DataGridViewRowContextMenuStripNeededEventArgs : EventArgs
type DataGridViewRowContextMenuStripNeededEventArgs = class
    inherit EventArgs
Public Class DataGridViewRowContextMenuStripNeededEventArgs
Inherits EventArgs
継承
DataGridViewRowContextMenuStripNeededEventArgsDataGridViewRowContextMenuStripNeededEventArgsDataGridViewRowContextMenuStripNeededEventArgsDataGridViewRowContextMenuStripNeededEventArgs

次のコード例ではRowContextMenuStripNeeded 、イベントを処理ContextMenuStripして、従業員のタイトルに基づいてを提供します。The following code example handles the RowContextMenuStripNeeded event to provide a ContextMenuStrip based on the title of the employee. この例では、2つのショートカットメニューがあります。1つはマネージャー用で、もう1つは他のすべての従業員用です。In this example, there are two shortcut menus, one for managers and one for all other employees.

#region Using directives

using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;

#endregion

class Form1 : Form
{
    private DataGridView dataGridView1 = new DataGridView();
    private ContextMenuStrip employeeMenuStrip = new ContextMenuStrip();
    private ContextMenuStrip managerMenuStrip = new ContextMenuStrip();
    private ToolStripMenuItem toolStripMenuItem1 = new ToolStripMenuItem();
    private ToolStripMenuItem toolStripMenuItem2 = new ToolStripMenuItem();
    private ToolStripMenuItem toolStripMenuItem3 = new ToolStripMenuItem();

    private int contextMenuRowIndex;

    public Form1()
    {
        // Initialize the form.
        // This code can be replaced with designer generated code.
        this.Size = new Size(700, 300);
        this.Controls.Add(dataGridView1);

        toolStripMenuItem1.Text = "View Employee Sales Report";
        toolStripMenuItem2.Text = "View Team Sales Report";
        toolStripMenuItem3.Text = "View Company Sales Team Ranking Report";
    }

    protected override void OnLoad(EventArgs e)
    {
        dataGridView1.DataBindingComplete +=
            new DataGridViewBindingCompleteEventHandler(
            dataGridView1_DataBindingComplete);
        dataGridView1.CellToolTipTextNeeded +=
            new DataGridViewCellToolTipTextNeededEventHandler(
            dataGridView1_CellToolTipTextNeeded);
        dataGridView1.RowContextMenuStripNeeded +=
            new DataGridViewRowContextMenuStripNeededEventHandler(
            dataGridView1_RowContextMenuStripNeeded);
        toolStripMenuItem1.Click +=
            new EventHandler(toolStripMenuItem1_Click);
        toolStripMenuItem2.Click +=
            new EventHandler(toolStripMenuItem2_Click);
        toolStripMenuItem3.Click +=
            new EventHandler(toolStripMenuItem3_Click);

        employeeMenuStrip.Items.Add(toolStripMenuItem1);

        managerMenuStrip.Items.Add(toolStripMenuItem2);
        managerMenuStrip.Items.Add(toolStripMenuItem3);

        PopulateDataGridView();

        base.OnLoad(e);
    }

    // Establish the main entry point for the application.
    [STAThreadAttribute()]
    public static void Main()
    {
        Application.Run(new Form1());
    }

    // Replace this with your own code to populate the DataGridView.
    private void PopulateDataGridView()
    {
        dataGridView1.Dock = DockStyle.Fill;
        dataGridView1.AllowUserToAddRows = false;
        dataGridView1.MultiSelect = false;
        dataGridView1.ReadOnly = true;
        dataGridView1.AllowUserToDeleteRows = false;

        string query;
        query = "SELECT e1.*, e2.FirstName + ' ' + e2.LastName AS Manager "
            + "FROM employees AS e1 LEFT JOIN employees AS e2 "
            + "ON e1.ReportsTo = e2.EmployeeID";

        // Connect to the database
        SqlConnection sqlConnection1 = new SqlConnection(
            "Integrated Security=SSPI;Persist Security Info=False;" +
            "Initial Catalog=Northwind;Data Source=localhost");
        SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(query,
            sqlConnection1);

        DataTable dataTable1 = new DataTable();
        dataTable1.Locale = System.Globalization.CultureInfo.InvariantCulture;
        sqlDataAdapter1.Fill(dataTable1);

        dataGridView1.DataSource = dataTable1;
    }

    private void dataGridView1_DataBindingComplete(object sender,
        DataGridViewBindingCompleteEventArgs e)
    {
        // Hide some of the columns.
        dataGridView1.Columns["EmployeeID"].Visible = false;
        dataGridView1.Columns["Address"].Visible = false;
        dataGridView1.Columns["TitleOfCourtesy"].Visible = false;
        dataGridView1.Columns["BirthDate"].Visible = false;
        dataGridView1.Columns["HireDate"].Visible = false;
        dataGridView1.Columns["PostalCode"].Visible = false;
        dataGridView1.Columns["Photo"].Visible = false;
        dataGridView1.Columns["Notes"].Visible = false;
        dataGridView1.Columns["ReportsTo"].Visible = false;
        dataGridView1.Columns["PhotoPath"].Visible = false;

        // Disable sorting for the DataGridView.
        foreach (DataGridViewColumn i in
            dataGridView1.Columns)
        {
            i.SortMode = DataGridViewColumnSortMode.NotSortable;
        }

        dataGridView1.AutoResizeColumns();
    }

    void dataGridView1_RowContextMenuStripNeeded(object sender,
        DataGridViewRowContextMenuStripNeededEventArgs e)
    {
        DataGridViewRow dataGridViewRow1 = dataGridView1.Rows[e.RowIndex];

        toolStripMenuItem1.Enabled = true;

        // Show the appropriate ContextMenuStrip based on the employees title.
        if ((dataGridViewRow1.Cells["Title"].Value.ToString() ==
            "Sales Manager") ||
            (dataGridViewRow1.Cells["Title"].Value.ToString() ==
            "Vice President, Sales"))
        {
            e.ContextMenuStrip = managerMenuStrip;
        }
        else
        {
            e.ContextMenuStrip = employeeMenuStrip;
        }

        contextMenuRowIndex = e.RowIndex;
    }

    void dataGridView1_CellToolTipTextNeeded(object sender,
        DataGridViewCellToolTipTextNeededEventArgs e)
    {
        string newLine = Environment.NewLine;
        if (e.RowIndex > -1)
        {
            DataGridViewRow dataGridViewRow1 = dataGridView1.Rows[e.RowIndex];

            // Add the employee's ID to the ToolTipText.
            e.ToolTipText = String.Format("EmployeeID {0}:{1}",
                dataGridViewRow1.Cells["EmployeeID"].Value, newLine);

            // Add the employee's name to the ToolTipText.
            e.ToolTipText += String.Format("{0} {1} {2}{3}",
                dataGridViewRow1.Cells["TitleOfCourtesy"].Value.ToString(),
                dataGridViewRow1.Cells["FirstName"].Value.ToString(),
                dataGridViewRow1.Cells["LastName"].Value.ToString(),
                newLine);

            // Add the employee's title to the ToolTipText.
            e.ToolTipText += String.Format("{0}{1}{2}",
                dataGridViewRow1.Cells["Title"].Value.ToString(),
                newLine, newLine);

            // Add the employee's contact information to the ToolTipText.
            e.ToolTipText += String.Format("{0}{1}{2}, ",
                dataGridViewRow1.Cells["Address"].Value.ToString(), newLine,
                dataGridViewRow1.Cells["City"].Value.ToString());
            if (!String.IsNullOrEmpty(
                dataGridViewRow1.Cells["Region"].Value.ToString()))
            {
                e.ToolTipText += String.Format("{0}, ",
                    dataGridViewRow1.Cells["Region"].Value.ToString());
            }
            e.ToolTipText += String.Format("{0}, {1}{2}{3} EXT:{4}{5}{6}",
                dataGridViewRow1.Cells["Country"].Value.ToString(),
                dataGridViewRow1.Cells["PostalCode"].Value.ToString(),
                newLine, dataGridViewRow1.Cells["HomePhone"].Value.ToString(),
                dataGridViewRow1.Cells["Extension"].Value.ToString(),
                newLine, newLine);

            // Add employee information to the ToolTipText.
            DateTime HireDate =
                (DateTime)dataGridViewRow1.Cells["HireDate"].Value;
            e.ToolTipText +=
                String.Format("Employee since: {0}/{1}/{2}{3}Manager: {4}",
                HireDate.Month.ToString(), HireDate.Day.ToString(),
                HireDate.Year.ToString(), newLine,
                dataGridViewRow1.Cells["Manager"].Value.ToString());
        }
    }

    void toolStripMenuItem1_Click(object sender, EventArgs e)
    {
        DataGridViewRow dataGridViewRow1 =
            dataGridView1.Rows[contextMenuRowIndex];

        MessageBox.Show(String.Format(
            "Sales Report for {0} {1}{2}{3}Reporting not implemented.",
            dataGridViewRow1.Cells["FirstName"].Value.ToString(),
            dataGridViewRow1.Cells["LastName"].Value.ToString(),
            Environment.NewLine, Environment.NewLine));
    }

    void toolStripMenuItem2_Click(object sender, EventArgs e)
    {
        DataGridViewRow dataGridViewRow1 =
            dataGridView1.Rows[contextMenuRowIndex];
        MessageBox.Show(String.Format(
            "Sales Report for {0} {1}'s Team{2}{3}Reporting not implemented.",
            dataGridViewRow1.Cells["FirstName"].Value.ToString(),
            dataGridViewRow1.Cells["LastName"].Value.ToString(),
            Environment.NewLine, Environment.NewLine));
    }

    void toolStripMenuItem3_Click(object sender, EventArgs e)
    {
        DataGridViewRow dataGridViewRow1 =
            dataGridView1.Rows[contextMenuRowIndex];
        MessageBox.Show(String.Format(
            "Company Sales Ranking Report:{0}{1}Reporting not implemented.",
            Environment.NewLine, Environment.NewLine));
    }
}
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Drawing
Imports System.Windows.Forms

Class Form1
    Inherits Form

    Private WithEvents dataGridView1 As New DataGridView()
    Private WithEvents employeeMenuStrip As New ContextMenuStrip()
    Private WithEvents managerMenuStrip As New ContextMenuStrip()
    Private WithEvents toolStripMenuItem1 As New ToolStripMenuItem()
    Private WithEvents toolStripMenuItem2 As New ToolStripMenuItem()
    Private WithEvents toolStripMenuItem3 As New ToolStripMenuItem()

    Private contextMenuRowIndex As Integer

    Public Sub New()
        Me.Size = New Size(700, 300)
        Me.Controls.Add(dataGridView1)

        toolStripMenuItem1.Text = "View Employee Sales Report"
        toolStripMenuItem2.Text = "View Team Sales Report"
        toolStripMenuItem3.Text = "View Company Sales Team Ranking Report"

        With employeeMenuStrip
            .Items.Add(toolStripMenuItem1)
        End With
        With managerMenuStrip
            .Items.Add(toolStripMenuItem2)
            .Items.Add(toolStripMenuItem3)
        End With

        PopulateDataGridView()
    End Sub

    ' Establish the main entry point for the application.
    <STAThreadAttribute()> _
    Public Shared Sub Main()
        Application.Run(New Form1())
    End Sub

    Private Sub PopulateDataGridView()

        With dataGridView1
            .Dock = DockStyle.Fill
            .AllowUserToAddRows = False
            .MultiSelect = False
            .ReadOnly = True
            .AllowUserToDeleteRows = False
        End With

        Dim query As String
        query = "SELECT e1.*, e2.FirstName + ' ' + e2.LastName AS Manager "
        query &= "FROM employees AS e1 LEFT JOIN employees AS e2 "
        query &= "ON e1.ReportsTo = e2.EmployeeID"

        ' Connect to the database
        Dim sqlConnection1 As New SqlConnection( _
            "Integrated Security=SSPI;Persist Security Info=False;" & _
            "Initial Catalog=Northwind;Data Source=localhost")
        Dim sqlDataAdapter1 As New SqlDataAdapter(query, _
            sqlConnection1)

        Dim dataTable1 As New System.Data.DataTable()
        dataTable1.Locale = System.Globalization.CultureInfo.InvariantCulture
        sqlDataAdapter1.Fill(dataTable1)

        dataGridView1.DataSource = dataTable1
    End Sub

    Private Sub dataGridView1_DataBindingComplete(ByVal sender As Object, _
    ByVal e As DataGridViewBindingCompleteEventArgs) _
    Handles dataGridView1.DataBindingComplete

        ' Hide some of the columns.
        With dataGridView1
            .Columns("EmployeeID").Visible = False
            .Columns("Address").Visible = False
            .Columns("TitleOfCourtesy").Visible = False
            .Columns("BirthDate").Visible = False
            .Columns("HireDate").Visible = False
            .Columns("PostalCode").Visible = False
            .Columns("Photo").Visible = False
            .Columns("Notes").Visible = False
            .Columns("ReportsTo").Visible = False
            .Columns("PhotoPath").Visible = False
        End With

        ' Disable sorting for the DataGridView.
        Dim i As DataGridViewColumn
        For Each i In dataGridView1.Columns
            i.SortMode = DataGridViewColumnSortMode.NotSortable
        Next i

        dataGridView1.AutoResizeColumns()

    End Sub

    Public Sub dataGridView1_RowContextMenuStripNeeded( _
        ByVal sender As Object, _
        ByVal e As DataGridViewRowContextMenuStripNeededEventArgs) _
        Handles dataGridView1.RowContextMenuStripNeeded

        Dim dataGridViewRow1 As DataGridViewRow = _
        dataGridView1.Rows(e.RowIndex)

        toolStripMenuItem1.Enabled = True

        ' Show the appropriate ContextMenuStrip based on the employees title.
        If dataGridViewRow1.Cells("Title").Value.ToString() = _
            "Sales Manager" OrElse _
            dataGridViewRow1.Cells("Title").Value.ToString() = _
            "Vice President, Sales" Then

            e.ContextMenuStrip = managerMenuStrip
        Else
            e.ContextMenuStrip = employeeMenuStrip
        End If

        contextMenuRowIndex = e.RowIndex
    End Sub

    Public Sub dataGridView1_CellToolTipTextNeeded(ByVal sender As Object, _
        ByVal e As DataGridViewCellToolTipTextNeededEventArgs) _
        Handles dataGridView1.CellToolTipTextNeeded

        Dim newLine As String = Environment.NewLine
        If e.RowIndex > -1 Then
            Dim dataGridViewRow1 As DataGridViewRow = _
            dataGridView1.Rows(e.RowIndex)

            ' Add the employee's ID to the ToolTipText.
            e.ToolTipText = String.Format("EmployeeID {0}: {1}", _
                dataGridViewRow1.Cells("EmployeeID").Value.ToString(), _
                newLine)

            ' Add the employee's name to the ToolTipText.
            e.ToolTipText += String.Format("{0} {1} {2} {3}", _
                dataGridViewRow1.Cells("TitleOfCourtesy").Value.ToString(), _
                dataGridViewRow1.Cells("FirstName").Value.ToString(), _
                dataGridViewRow1.Cells("LastName").Value.ToString(), _
                newLine)

            ' Add the employee's title to the ToolTipText.
            e.ToolTipText += String.Format("{0}{1}{2}", _
                dataGridViewRow1.Cells("Title").Value.ToString(), _
                newLine, newLine)

            ' Add the employee's contact information to the ToolTipText.
            e.ToolTipText += String.Format("{0}{1}{2}, ", _
                dataGridViewRow1.Cells("Address").Value.ToString(), newLine, _
                dataGridViewRow1.Cells("City").Value.ToString())
            If Not String.IsNullOrEmpty( _
                dataGridViewRow1.Cells("Region").Value.ToString())

                e.ToolTipText += String.Format("{0}, ", _
                   dataGridViewRow1.Cells("Region").Value.ToString())
            End If
            e.ToolTipText += String.Format("{0}, {1}{2}{3} EXT:{4}{5}{6}", _
                dataGridViewRow1.Cells("Country").Value.ToString(), _
                dataGridViewRow1.Cells("PostalCode").Value.ToString(), _
                newLine, _
                dataGridViewRow1.Cells("HomePhone").Value.ToString(), _
                dataGridViewRow1.Cells("Extension").Value.ToString(), _
                newLine, newLine)

            ' Add employee information to the ToolTipText.
            Dim HireDate As DateTime = _
                CType(dataGridViewRow1.Cells("HireDate").Value, DateTime)
            e.ToolTipText += _
                String.Format("Employee since: {0}/{1}/{2}{3}Manager: {4}", _
                    HireDate.Month.ToString(), HireDate.Day.ToString(), _
                    HireDate.Year.ToString(), newLine, _
                    dataGridViewRow1.Cells("Manager").Value.ToString())
        End If
    End Sub

    Public Sub toolStripMenuItem1_Click(ByVal sender As Object, _
        ByVal e As EventArgs) Handles toolStripMenuItem1.Click

        Dim dataGridViewRow1 As DataGridViewRow = _
            dataGridView1.Rows(contextMenuRowIndex)

        MessageBox.Show(String.Format( _
            "Sales Report for {0} {1}:{2}{3}Reporting Not Implemented", _
            dataGridViewRow1.Cells("FirstName").Value.ToString(), _
            dataGridViewRow1.Cells("LastName").Value.ToString(), _
            Environment.NewLine, Environment.NewLine))
    End Sub

    Public Sub toolStripMenuItem2_Click(ByVal sender As Object, _
        ByVal e As EventArgs) Handles toolStripMenuItem2.Click

        Dim dataGridViewRow1 As DataGridViewRow = _
            dataGridView1.Rows(contextMenuRowIndex)

        MessageBox.Show(String.Format( _
            "Sales Report for {0} {1}:{2}{3}Reporting Not Implemented", _
            dataGridViewRow1.Cells("FirstName").Value.ToString(), _
            dataGridViewRow1.Cells("LastName").Value.ToString(), _
            Environment.NewLine, Environment.NewLine))
    End Sub

    Public Sub toolStripMenuItem3_Click(ByVal sender As Object, _
        ByVal e As EventArgs) Handles toolStripMenuItem3.Click

        Dim dataGridViewRow1 As DataGridViewRow = _
            dataGridView1.Rows(contextMenuRowIndex)

        MessageBox.Show(String.Format( _
          "Company Sales Ranking Report:{0}{1}Reporting not implemented.", _
            Environment.NewLine, Environment.NewLine))
    End Sub
End Class

注釈

VirtualMode DataGridView trueイベントは、コントロールDataSourceプロパティが設定されているか、そのプロパティがである場合にのみ発生します。 RowContextMenuStripNeededThe RowContextMenuStripNeeded event occurs only when the DataGridView control DataSource property is set or its VirtualMode property is true. イベントのRowContextMenuStripNeeded処理は、行の現在の状態または含まれている値によって決定されるショートカットメニューを表示する場合に便利です。Handling the RowContextMenuStripNeeded event is useful when you want to display a shortcut menu determined by a row's current state or the values it contains.

RowContextMenuStripNeededイベントを処理すると、クリックされた特定のセルのショートカットメニューをイベントがCellContextMenuStripNeededオーバーライドしない限り、ユーザーが行を右クリックするたびに、ハンドラーで指定したショートカットメニューが表示されます。When you handle the RowContextMenuStripNeeded event, the shortcut menu that you specify in the handler is shown whenever the user right-clicks a row unless the CellContextMenuStripNeeded event overrides the shortcut menu for the specific cell that was clicked.

また、プログラムによって、またはDataGridViewRow.ContextMenuStripユーザーが行を右クリックしたときに、プロパティの値が取得されるたびにイベントが発生します。RowContextMenuStripNeededThe RowContextMenuStripNeeded event also occurs whenever the value of the DataGridViewRow.ContextMenuStrip property is retrieved, either programmatically or when the user right-clicks a row.

RowIndexプロパティを使用して、行または列に含まれる値の状態を確認し、この情報を使用してContextMenuStripプロパティを変更または変更することができます。You can use the RowIndex property to determine the state of a row or the values it contains, and use this information to change or modify the ContextMenuStrip property. このプロパティは、イベント値がオーバーライドする行ContextMenuStripプロパティの値で初期化されます。This property is initialized with the value of the row ContextMenuStrip property, which the event value overrides.

大量のデータを処理するときにContextMenuStrip イベントを処理して、複数行の行の値を設定した場合のパフォーマンスの低下を回避します。RowContextMenuStripNeededHandle the RowContextMenuStripNeeded event when working with large amounts of data to avoid the performance penalties of setting the row ContextMenuStrip value for multiple rows. 詳細については、「 Windows フォーム DataGridView コントロールを拡張するための推奨される手順」を参照してください。For more information, see Best Practices for Scaling the Windows Forms DataGridView Control.

イベントを処理する方法の詳細については、次を参照してください。処理とイベントの発生します。For more information about how to handle events, see Handling and Raising Events.

コンストラクター

DataGridViewRowContextMenuStripNeededEventArgs(Int32) DataGridViewRowContextMenuStripNeededEventArgs(Int32) DataGridViewRowContextMenuStripNeededEventArgs(Int32) DataGridViewRowContextMenuStripNeededEventArgs(Int32)

DataGridViewRowContextMenuStripNeededEventArgs クラスの新しいインスタンスを初期化します。Initializes a new instance of the DataGridViewRowContextMenuStripNeededEventArgs class.

プロパティ

ContextMenuStrip ContextMenuStrip ContextMenuStrip ContextMenuStrip

RowContextMenuStripNeeded イベントの発生元である行のショートカット メニューを取得または設定します。Gets or sets the shortcut menu for the row that raised the RowContextMenuStripNeeded event.

RowIndex RowIndex RowIndex RowIndex

ショートカット メニューを要求している行のインデックスを取得します。Gets the index of the row that is requesting a shortcut menu.

メソッド

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

適用対象

こちらもご覧ください