DataGridView.RowContextMenuStripNeeded DataGridView.RowContextMenuStripNeeded DataGridView.RowContextMenuStripNeeded DataGridView.RowContextMenuStripNeeded Event

定義

行のショートカット メニューが必要な場合に発生します。Occurs when a row's shortcut menu is needed.

public:
 event System::Windows::Forms::DataGridViewRowContextMenuStripNeededEventHandler ^ RowContextMenuStripNeeded;
public event System.Windows.Forms.DataGridViewRowContextMenuStripNeededEventHandler RowContextMenuStripNeeded;
member this.RowContextMenuStripNeeded : System.Windows.Forms.DataGridViewRowContextMenuStripNeededEventHandler 
Public Custom Event RowContextMenuStripNeeded As DataGridViewRowContextMenuStripNeededEventHandler 

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

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;
}
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

注釈

RowContextMenuStripNeededのみイベントが発生したときに、DataGridViewコントロールDataSourceプロパティを設定またはそのVirtualModeプロパティはtrueThe 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 overrides the shortcut menu for the specific cell that was clicked.

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

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

処理、RowContextMenuStripNeeded大量のデータ行の設定のパフォーマンスの低下を回避するために使用する場合、イベントContextMenuStrip複数行の値。Handle 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.

適用対象

こちらもご覧ください