次の方法で共有


DataGridViewRowContextMenuStripNeededEventHandler 代理人

定義

RowContextMenuStripNeededDataGridView イベントを処理するメソッドを表します。

public delegate void DataGridViewRowContextMenuStripNeededEventHandler(System::Object ^ sender, DataGridViewRowContextMenuStripNeededEventArgs ^ e);
public delegate void DataGridViewRowContextMenuStripNeededEventHandler(object sender, DataGridViewRowContextMenuStripNeededEventArgs e);
public delegate void DataGridViewRowContextMenuStripNeededEventHandler(object? sender, DataGridViewRowContextMenuStripNeededEventArgs e);
type DataGridViewRowContextMenuStripNeededEventHandler = delegate of obj * DataGridViewRowContextMenuStripNeededEventArgs -> unit
Public Delegate Sub DataGridViewRowContextMenuStripNeededEventHandler(sender As Object, e As DataGridViewRowContextMenuStripNeededEventArgs)

パラメーター

sender
Object

イベントのソース。

次のコード例では、 RowContextMenuStripNeeded イベントは、従業員のタイトルに基づいて を ContextMenuStrip 提供するために処理されます。 この例では、2 つのコンテキスト メニューがあります。1 つはマネージャー用、もう 1 つは他のすべての従業員用です。

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、コントロール DataSource プロパティが設定されているか、DataGridViewそのVirtualModeプロパティが であるtrue場合にのみ発生します。 イベントの処理は、行の RowContextMenuStripNeeded 現在の状態または含まれている値によって決まるショートカット メニューを表示する場合に便利です。

イベントを RowContextMenuStripNeeded 処理すると、ハンドラーで指定したショートカット メニューは、クリックされた特定のセルのショートカット メニューをオーバーライドしない限り CellContextMenuStripNeeded 、ユーザーが行を右クリックするたびに表示されます。

イベントは RowContextMenuStripNeeded 、プログラムによって、またはユーザーが行を DataGridViewRow.ContextMenuStrip 右クリックしたときに、プロパティの値が取得されるたびに発生します。

プロパティを DataGridViewRowContextMenuStripNeededEventArgs.RowIndex 使用して、行の状態または含まれる値を確認し、この情報を使用してプロパティを DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip 変更または変更できます。 このプロパティは、イベント値がオーバーライドする row ContextMenuStrip プロパティの値で初期化されます。

大量のデータを RowContextMenuStripNeeded 操作するときにイベントを処理して、複数の行の行 ContextMenuStrip 値を設定するパフォーマンスの低下を回避します。 詳細については、「 Windows フォーム DataGridView コントロールを拡張するための推奨される手順」を参照してください。

イベントを処理する方法の詳細については、次を参照してください。処理とイベントの発生します。

DataGridViewRowContextMenuStripNeededEventHandler デリゲートを作成する場合は、イベントを処理するメソッドを指定します。 イベント ハンドラーにイベントを関連付けるには、イベントにデリゲートのインスタンスを追加します。 イベント ハンドラーは、デリゲートを削除しない限り、イベントが発生するたびに呼び出されます。 イベント ハンドラー デリゲートの詳細については、「イベントの 処理と発生」を参照してください。

拡張メソッド

GetMethodInfo(Delegate)

指定したデリゲートによって表されるメソッドを表すオブジェクトを取得します。

適用対象

こちらもご覧ください