DataGridViewRowContextMenuStripNeededEventArgs Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt gegevens voor de RowContextMenuStripNeeded gebeurtenis.
public ref class DataGridViewRowContextMenuStripNeededEventArgs : EventArgs
public class DataGridViewRowContextMenuStripNeededEventArgs : EventArgs
type DataGridViewRowContextMenuStripNeededEventArgs = class
inherit EventArgs
Public Class DataGridViewRowContextMenuStripNeededEventArgs
Inherits EventArgs
- Overname
Voorbeelden
In het volgende codevoorbeeld wordt de RowContextMenuStripNeeded gebeurtenis verwerkt om een ContextMenuStrip op basis van de titel van de werknemer op te geven. In dit voorbeeld zijn er twee snelmenu's, één voor managers en één voor alle andere werknemers.
#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.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
Opmerkingen
De RowContextMenuStripNeeded gebeurtenis treedt alleen op wanneer de eigenschap van het DataGridView besturingselement DataSource is ingesteld of de VirtualMode eigenschap is true. Het afhandelen van de RowContextMenuStripNeeded gebeurtenis is handig wanneer u een snelmenu wilt weergeven dat wordt bepaald door de huidige status van een rij of de waarden die deze bevat.
Wanneer u de RowContextMenuStripNeeded gebeurtenis afhandelt, wordt het snelmenu dat u in de handler opgeeft, weergegeven wanneer de gebruiker met de rechtermuisknop op een rij klikt, tenzij de CellContextMenuStripNeeded gebeurtenis het snelmenu voor de specifieke cel overschrijft waarop is geklikt.
De RowContextMenuStripNeeded gebeurtenis treedt ook op wanneer de waarde van de DataGridViewRow.ContextMenuStrip eigenschap wordt opgehaald, programmatisch of wanneer de gebruiker met de rechtermuisknop op een rij klikt.
U kunt de RowIndex eigenschap gebruiken om de status van een rij of de waarden die deze bevat te bepalen en deze informatie te gebruiken om de ContextMenuStrip eigenschap te wijzigen of te wijzigen. Deze eigenschap wordt geïnitialiseerd met de waarde van de rijeigenschap ContextMenuStrip , die de gebeurteniswaarde overschrijft.
RowContextMenuStripNeeded De gebeurtenis afhandelen wanneer u met grote hoeveelheden gegevens werkt om de prestatiestraffen te voorkomen bij het instellen van de rijwaarde ContextMenuStrip voor meerdere rijen. Zie Best practices voor het schalen van het Windows Forms DataGridView-besturingselement voor meer informatie.
Zie Gebeurtenissen verwerken en genereren voor meer informatie over het afhandelen van gebeurtenissen.
Constructors
| Name | Description |
|---|---|
| DataGridViewRowContextMenuStripNeededEventArgs(Int32) |
Initialiseert een nieuw exemplaar van de DataGridViewRowContextMenuStripNeededEventArgs klasse. |
Eigenschappen
| Name | Description |
|---|---|
| ContextMenuStrip |
Hiermee wordt het snelmenu opgehaald of ingesteld voor de rij die de RowContextMenuStripNeeded gebeurtenis heeft gegenereerd. |
| RowIndex |
Hiermee haalt u de index op van de rij die een snelmenu aanvraagt. |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |