DataGridViewRowContextMenuStripNeededEventArgs クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
RowContextMenuStripNeeded イベントのデータを提供します。
public ref class DataGridViewRowContextMenuStripNeededEventArgs : EventArgs
public class DataGridViewRowContextMenuStripNeededEventArgs : EventArgs
type DataGridViewRowContextMenuStripNeededEventArgs = class
inherit EventArgs
Public Class DataGridViewRowContextMenuStripNeededEventArgs
Inherits EventArgs
- 継承
例
次のコード例では、 イベントを RowContextMenuStripNeeded 処理して、従業員のタイトルに基づいて を提供 ContextMenuStrip します。 この例では、マネージャー用と他のすべての従業員用の 2 つのショートカット メニューがあります。
#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
注釈
イベントはRowContextMenuStripNeeded、コントロール DataSource プロパティがDataGridView設定されているか、そのVirtualModeプロパティが のtrue
場合にのみ発生します。 イベントの処理は、行の RowContextMenuStripNeeded 現在の状態または含まれている値によって決まるショートカット メニューを表示する場合に便利です。
イベントを RowContextMenuStripNeeded 処理すると、ユーザーが行を右クリックするたびに、ハンドラーで指定したショートカット メニューが表示されます。ただし、イベントによってクリックされた特定のセルのショートカット メニューがオーバーライドされない限り CellContextMenuStripNeeded です。
イベントは RowContextMenuStripNeeded 、プログラムによって、またはユーザーが行を DataGridViewRow.ContextMenuStrip 右クリックしたときに、プロパティの値が取得されるたびにも発生します。
プロパティを RowIndex 使用して、行の状態または含まれる値を確認し、この情報を使用してプロパティを ContextMenuStrip 変更または変更できます。 このプロパティは、イベント値がオーバーライドする row ContextMenuStrip プロパティの値で初期化されます。
大量のデータを RowContextMenuStripNeeded 操作するときに イベントを処理して、複数の行の行 ContextMenuStrip 値を設定するパフォーマンスの低下を回避します。 詳細については、「 Windows フォーム DataGridView コントロールを拡張するための推奨される手順」を参照してください。
イベントを処理する方法の詳細については、次を参照してください。処理とイベントの発生します。
コンストラクター
DataGridViewRowContextMenuStripNeededEventArgs(Int32) |
DataGridViewRowContextMenuStripNeededEventArgs クラスの新しいインスタンスを初期化します。 |
プロパティ
ContextMenuStrip |
RowContextMenuStripNeeded イベントの発生元である行のショートカット メニューを取得または設定します。 |
RowIndex |
ショートカット メニューを要求している行のインデックスを取得します。 |
メソッド
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
適用対象
こちらもご覧ください
.NET