DataGridViewRowContextMenuStripNeededEventArgs 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
RowContextMenuStripNeeded 이벤트에 대한 데이터를 제공합니다.
public ref class DataGridViewRowContextMenuStripNeededEventArgs : EventArgs
public class DataGridViewRowContextMenuStripNeededEventArgs : EventArgs
type DataGridViewRowContextMenuStripNeededEventArgs = class
inherit EventArgs
Public Class DataGridViewRowContextMenuStripNeededEventArgs
Inherits EventArgs
- 상속
예제
다음 코드 예제에서는 처리를 RowContextMenuStripNeeded 제공 하는 이벤트를 ContextMenuStrip 는 직원의 직책이 기반 합니다. 이 예제는 두 가지 바로 가기 메뉴, 관리자 및 다른 모든 직원에 대 한 합니다.
#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 이벤트에만 발생 경우를 DataGridView 컨트롤 DataSource 속성을 설정 또는 해당 VirtualMode 속성은 true
합니다. 처리는 RowContextMenuStripNeeded 이벤트는 행의 현재 상태 또는 포함 된 값에 의해 결정 된 바로 가기 메뉴를 표시 하려는 경우에 유용 합니다.
처리 하는 경우는 RowContextMenuStripNeeded 이벤트 처리기에서 지정 하는 바로 가기 메뉴가 표시 됩니다 하지 않는 한 사용자는 행을 클릭할 때마다는 CellContextMenuStripNeeded 이벤트 클릭 된 특정 셀에 대 한 바로 가기 메뉴를 재정의 합니다.
RowContextMenuStripNeeded 이벤트는 또한 될 때마다 발생의 값을 DataGridViewRow.ContextMenuStrip 속성은 검색 하거나 프로그래밍 방식으로 또는 사용자 행을 마우스 오른쪽 단추로 클릭할 때입니다.
사용할 수는 RowIndex 속성을 행 또는 포함 된 값의 상태를 확인 하 고이 정보를 사용 하 여 변경 하거나 수정 하는 ContextMenuStrip 속성입니다. 이 속성은 행의 값을 사용 하 여 초기화 ContextMenuStrip 이벤트 값을 재정의 하는 속성입니다.
처리를 RowContextMenuStripNeeded 대량의 행을 설정 하는 성능 저하를 방지 하려면 데이터를 작업할 때 이벤트 ContextMenuStrip 여러 행에 대 한 값입니다. 자세한 내용은 Windows Forms DataGridView 컨트롤의 크기를 조정하는 최선의 방법을 참조하세요.
이벤트를 처리 하는 방법에 대 한 자세한 내용은 참조 하세요. 이벤트 처리 및 발생합니다.
생성자
DataGridViewRowContextMenuStripNeededEventArgs(Int32) |
DataGridViewRowContextMenuStripNeededEventArgs 클래스의 새 인스턴스를 초기화합니다. |
속성
ContextMenuStrip |
RowContextMenuStripNeeded 이벤트를 발생시킨 행에 대한 바로 가기 메뉴를 가져오거나 설정합니다. |
RowIndex |
바로 가기 메뉴를 요청하는 행의 인덱스를 가져옵니다. |
메서드
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
적용 대상
추가 정보
.NET