Bagikan melalui


DataGridView.RowContextMenuStripNeeded Kejadian

Definisi

Terjadi saat menu pintasan baris diperlukan.

public:
 event System::Windows::Forms::DataGridViewRowContextMenuStripNeededEventHandler ^ RowContextMenuStripNeeded;
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 

Jenis Acara

Contoh

Contoh kode berikut menangani RowContextMenuStripNeeded peristiwa untuk memberikan ContextMenuStrip berdasarkan judul karyawan. Dalam contoh ini, ada dua menu pintasan, satu untuk manajer dan satu untuk semua karyawan lainnya.

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

Keterangan

Peristiwa RowContextMenuStripNeeded hanya terjadi ketika DataGridView properti kontrol DataSource diatur atau propertinya VirtualMode adalah true. Menangani RowContextMenuStripNeeded peristiwa berguna saat Anda ingin menampilkan menu pintasan yang ditentukan oleh status baris saat ini atau nilai yang dikandungnya.

Saat Anda menangani RowContextMenuStripNeeded peristiwa, menu pintasan yang Anda tentukan di handler ditampilkan setiap kali pengguna mengklik kanan baris kecuali CellContextMenuStripNeeded mengambil alih menu pintasan untuk sel tertentu yang diklik.

Peristiwa juga RowContextMenuStripNeeded terjadi setiap kali nilai DataGridViewRow.ContextMenuStrip properti diambil, baik secara terprogram atau saat pengguna mengklik kanan baris.

Anda dapat menggunakan DataGridViewRowContextMenuStripNeededEventArgs.RowIndex properti untuk menentukan status baris atau nilai yang dikandungnya, dan menggunakan informasi ini untuk mengubah atau mengubah DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip properti. Properti ini diinisialisasi dengan nilai properti baris ContextMenuStrip , yang ditimpa nilai peristiwa.

RowContextMenuStripNeeded Tangani peristiwa saat bekerja dengan data dalam jumlah besar untuk menghindari penalti performa pengaturan nilai baris ContextMenuStrip untuk beberapa baris. Untuk informasi selengkapnya, lihat Praktik Terbaik untuk Menskalakan Kontrol Formulir Windows DataGridView.

Untuk informasi selengkapnya tentang cara menangani peristiwa, lihat Menangani dan Menaikkan Peristiwa.

Berlaku untuk

Lihat juga