DataGridViewCellContextMenuStripNeededEventArgs Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje data pro událost CellContextMenuStripNeeded.
public ref class DataGridViewCellContextMenuStripNeededEventArgs : System::Windows::Forms::DataGridViewCellEventArgs
public class DataGridViewCellContextMenuStripNeededEventArgs : System.Windows.Forms.DataGridViewCellEventArgs
type DataGridViewCellContextMenuStripNeededEventArgs = class
inherit DataGridViewCellEventArgs
Public Class DataGridViewCellContextMenuStripNeededEventArgs
Inherits DataGridViewCellEventArgs
- Dědičnost
Příklady
Následující příklad kódu používá DataGridViewCellContextMenuStripNeededEventArgs třídu k nastavení místní nabídky bez zrušení sdílení řádku.
ToolStripMenuItem^ wholeTable;
ToolStripMenuItem^ lookUp;
System::Windows::Forms::ContextMenuStrip^ strip;
String^ cellErrorText;
void dataGridView1_CellContextMenuStripNeeded( Object^ /*sender*/,
DataGridViewCellContextMenuStripNeededEventArgs^ e )
{
cellErrorText = String::Empty;
if ( strip == nullptr )
{
strip = gcnew System::Windows::Forms::ContextMenuStrip;
lookUp->Text = L"Look Up";
wholeTable->Text = L"See Whole Table";
strip->Items->Add( lookUp );
strip->Items->Add( wholeTable );
}
e->ContextMenuStrip = strip;
}
void wholeTable_Click( Object^ /*sender*/, EventArgs^ /*e*/ )
{
dataGridView1->DataSource = Populate( L"Select * from employees", true );
}
DataGridViewCellEventArgs^ theCellImHoveringOver;
void dataGridView1_CellMouseEnter( Object^ /*sender*/, DataGridViewCellEventArgs^ e )
{
theCellImHoveringOver = e;
}
DataGridViewCellEventArgs^ cellErrorLocation;
void lookUp_Click( Object^ /*sender*/, EventArgs^ /*e*/ )
{
try
{
dataGridView1->DataSource = Populate( String::Format( L"Select * from employees where {0} = '{1}'", dataGridView1->Columns[ theCellImHoveringOver->ColumnIndex ]->Name, dataGridView1->Rows[ theCellImHoveringOver->RowIndex ]->Cells[ theCellImHoveringOver->ColumnIndex ]->Value ), true );
}
catch ( ... )
{
cellErrorText = L"Can't look this cell up";
cellErrorLocation = theCellImHoveringOver;
}
}
void dataGridView1_CellErrorTextNeeded( Object^ /*sender*/, DataGridViewCellErrorTextNeededEventArgs^ e )
{
if ( cellErrorLocation != nullptr )
{
if ( e->ColumnIndex == cellErrorLocation->ColumnIndex && e->RowIndex == cellErrorLocation->RowIndex )
{
e->ErrorText = cellErrorText;
}
}
}
DataTable^ Populate( String^ query, bool resetUnsharedCounter )
{
if ( resetUnsharedCounter )
{
ResetCounter();
}
// Alter the data source as necessary
SqlDataAdapter^ adapter = gcnew SqlDataAdapter( query,
gcnew SqlConnection( L"Integrated Security=SSPI;Persist Security Info=False;"
L"Initial Catalog=Northwind;Data Source= localhost" ) );
DataTable^ table = gcnew DataTable;
adapter->Fill( table );
return table;
}
Label^ count;
int unsharedRowCounter;
void ResetCounter()
{
unsharedRowCounter = 0;
count->Text = unsharedRowCounter.ToString();
}
private ToolStripMenuItem wholeTable = new ToolStripMenuItem();
private ToolStripMenuItem lookUp = new ToolStripMenuItem();
private ContextMenuStrip strip;
private string cellErrorText;
private void dataGridView1_CellContextMenuStripNeeded(object sender,
DataGridViewCellContextMenuStripNeededEventArgs e)
{
cellErrorText = String.Empty;
if (strip == null)
{
strip = new ContextMenuStrip();
lookUp.Text = "Look Up";
wholeTable.Text = "See Whole Table";
strip.Items.Add(lookUp);
strip.Items.Add(wholeTable);
}
e.ContextMenuStrip = strip;
}
private void wholeTable_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = Populate("Select * from employees", true);
}
private DataGridViewCellEventArgs theCellImHoveringOver;
private void dataGridView1_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
theCellImHoveringOver = e;
}
private DataGridViewCellEventArgs cellErrorLocation;
private void lookUp_Click(object sender, EventArgs e)
{
try
{
dataGridView1.DataSource = Populate("Select * from employees where " +
dataGridView1.Columns[theCellImHoveringOver.ColumnIndex].Name + " = '" +
dataGridView1.Rows[theCellImHoveringOver.RowIndex].
Cells[theCellImHoveringOver.ColumnIndex].Value + "'",
true);
}
catch (SqlException)
{
cellErrorText = "Can't look this cell up";
cellErrorLocation = theCellImHoveringOver;
}
}
private void dataGridView1_CellErrorTextNeeded(object sender,
DataGridViewCellErrorTextNeededEventArgs e)
{
if (cellErrorLocation != null)
{
if (e.ColumnIndex == cellErrorLocation.ColumnIndex &&
e.RowIndex == cellErrorLocation.RowIndex)
{
e.ErrorText = cellErrorText;
}
}
}
private DataTable Populate(string query, bool resetUnsharedCounter)
{
if (resetUnsharedCounter)
{
ResetCounter();
}
// Alter the data source as necessary
SqlDataAdapter adapter = new SqlDataAdapter(query,
new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;" +
"Initial Catalog=Northwind;Data Source=localhost"));
DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
adapter.Fill(table);
return table;
}
private Label count = new Label();
private int unsharedRowCounter;
private void ResetCounter()
{
unsharedRowCounter = 0;
count.Text = unsharedRowCounter.ToString();
}
Private WithEvents wholeTable As New ToolStripMenuItem()
Private WithEvents lookUp As New ToolStripMenuItem()
Private strip As ContextMenuStrip
Private cellErrorText As String
Private Sub dataGridView1_CellContextMenuStripNeeded(ByVal sender As Object, _
ByVal e As DataGridViewCellContextMenuStripNeededEventArgs) _
Handles dataGridView1.CellContextMenuStripNeeded
cellErrorText = String.Empty
If strip Is Nothing Then
strip = New ContextMenuStrip()
lookUp.Text = "Look Up"
wholeTable.Text = "See Whole Table"
strip.Items.Add(lookUp)
strip.Items.Add(wholeTable)
End If
e.ContextMenuStrip = strip
End Sub
Private Sub wholeTable_Click(ByVal sender As Object, ByVal e As EventArgs) Handles wholeTable.Click
dataGridView1.DataSource = Populate("Select * from employees", True)
End Sub
Private theCellImHoveringOver As DataGridViewCellEventArgs
Private Sub dataGridView1_CellMouseEnter(ByVal sender As Object, _
ByVal e As DataGridViewCellEventArgs) _
Handles dataGridView1.CellMouseEnter
theCellImHoveringOver = e
End Sub
Private cellErrorLocation As DataGridViewCellEventArgs
Private Sub lookUp_Click(ByVal sender As Object, ByVal e As EventArgs) Handles lookUp.Click
Try
dataGridView1.DataSource = Populate("Select * from employees where " & _
dataGridView1.Columns(theCellImHoveringOver.ColumnIndex).Name & " = '" & _
dataGridView1.Rows(theCellImHoveringOver.RowIndex).Cells(theCellImHoveringOver.ColumnIndex).Value.ToString() & _
"'", True)
Catch ex As SqlException
cellErrorText = "Can't look this cell up"
cellErrorLocation = theCellImHoveringOver
End Try
End Sub
Private Sub dataGridView1_CellErrorTextNeeded(ByVal sender As Object, _
ByVal e As DataGridViewCellErrorTextNeededEventArgs) _
Handles dataGridView1.CellErrorTextNeeded
If (Not cellErrorLocation Is Nothing) Then
If e.ColumnIndex = cellErrorLocation.ColumnIndex AndAlso _
e.RowIndex = cellErrorLocation.RowIndex Then
e.ErrorText = cellErrorText
End If
End If
End Sub
Private Function Populate(ByVal query As String, ByVal resetUnsharedCounter As Boolean) As DataTable
If resetUnsharedCounter Then
ResetCounter()
End If
' Alter the data source as necessary
Dim adapter As New SqlDataAdapter(query, _
New SqlConnection("Integrated Security=SSPI;Persist Security Info=False;" & _
"Initial Catalog=Northwind;Data Source=localhost"))
Dim table As New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
adapter.Fill(table)
Return table
End Function
Private count As New Label()
Private unsharedRowCounter As Integer
Private Sub ResetCounter()
unsharedRowCounter = 0
count.Text = unsharedRowCounter.ToString()
End Sub
Poznámky
Událost CellContextMenuStripNeeded nastane pouze v případě, že je nastavena DataGridView vlastnost ovládacího prvku DataSource nebo je její VirtualMode vlastnost true
.
Při zpracování CellContextMenuStripNeeded události se místní nabídka, kterou zadáte v obslužné rutině, zobrazí vždy, když uživatel klikne pravým tlačítkem myši na buňku. To je užitečné, když chcete zobrazit místní nabídky určené aktuálním stavem nebo hodnotou buňky.
K CellContextMenuStripNeeded události dochází také při každém načtení hodnoty DataGridViewCell.ContextMenuStrip vlastnosti, buď programově, nebo když uživatel klikne pravým tlačítkem myši na buňku.
Pomocí vlastností a RowIndex můžete ColumnIndex určit stav nebo hodnotu buňky a pomocí těchto informací nastavit ContextMenuStrip vlastnost. Tato vlastnost je inicializována s hodnotou vlastnosti buňky ContextMenuStrip , kterou hodnota události přepíše.
CellContextMenuStripNeeded Zpracování události při práci s velkými objemy dat, abyste se vyhnuli postihům výkonu nastavení hodnoty buňky ContextMenuStrip pro více buněk. Další informace najdete v tématu Osvědčené postupy pro škálování ovládacího prvku model Windows Forms DataGridView.
Můžete také určit místní nabídky pro jednotlivé řádky místo jednotlivých buněk nastavením vlastnosti řádku ContextMenuStrip nebo zpracováním DataGridView události ovládacího prvku RowContextMenuStripNeeded . Nastavení vlastnosti buňky ContextMenuStrip přepíše nastavení vlastnosti řádku ContextMenuStrip a CellContextMenuStripNeeded událost přepíše jak událost, tak RowContextMenuStripNeeded nastavení vlastnosti řádku ContextMenuStrip . Můžete ale zadat null
místní nabídku buňky, aby se zabránilo přepsání místní nabídky řádku.
Další informace o zpracování událostí najdete v tématu Zpracování a vyvolávání událostí.
Konstruktory
DataGridViewCellContextMenuStripNeededEventArgs(Int32, Int32) |
Inicializuje novou instanci DataGridViewCellContextMenuStripNeededEventArgs třídy. |
Vlastnosti
ColumnIndex |
Získá hodnotu označující index sloupce buňky, pro kterou dochází k události. (Zděděno od DataGridViewCellEventArgs) |
ContextMenuStrip |
Získá nebo nastaví místní nabídku pro buňku, která vyvolala CellContextMenuStripNeeded událost. |
RowIndex |
Získá hodnotu označující index řádku buňky, pro kterou dochází k události. (Zděděno od DataGridViewCellEventArgs) |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Platí pro
Viz také
- DataGridView
- CellContextMenuStripNeeded
- DataSource
- VirtualMode
- OnCellContextMenuStripNeeded(DataGridViewCellContextMenuStripNeededEventArgs)
- DataGridViewCellContextMenuStripNeededEventHandler
- ContextMenuStrip
- ContextMenuStrip
- RowContextMenuStripNeeded
- ContextMenuStrip
- ContextMenuStrip
- Doporučené postupy pro změnu velikosti v ovládacím prvku Windows Forms DataGridView