ContextMenu-Klasse
Stellt ein Kontextmenü dar. Der ContextMenuStrip ersetzt Funktionen von früheren Versionen des ContextMenu-Steuerelements und erweitert dieses um neue Funktionen. Sie können das ContextMenu jedoch aus Gründen der Abwärtskompatibilität und zur künftigen Verwendung beibehalten.
Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)
Syntax
'Declaration
Public Class ContextMenu
Inherits Menu
'Usage
Dim instance As ContextMenu
public class ContextMenu : Menu
public ref class ContextMenu : public Menu
public class ContextMenu extends Menu
public class ContextMenu extends Menu
Hinweise
Die ContextMenu-Klasse stellt Kontextmenüs dar, die angezeigt werden, wenn der Benutzer mit der rechten Maustaste auf ein Steuerelement oder einen Bereich eines Formulars klickt. Kontextmenüs werden i. d. R. verwendet, um verschiedene, für den Benutzer in einem bestimmten Kontext der Anwendung nützliche Menüelemente aus einem MainMenu eines Formulars miteinander zu kombinieren. Sie können z. B. mithilfe eines einem TextBox-Steuerelement zugewiesenen Kontextmenüs Menübefehle zum Ändern der Textschriftart, zum Suchen nach Text innerhalb des Steuerelements oder Zwischenablagefeatures zum Kopieren und Einfügen von Text bereitstellen. Sie können in einem Kontextmenü außerdem zusätzliche MenuItem-Objekte anzeigen, die in keinem MainMenu verfügbar sind, um situationsspezifische Befehle bereitzustellen, deren Anzeige in einem MainMenu inadäquat wäre.
Ein Kontextmenü wird i. d. R. angezeigt, wenn ein Benutzer mit der rechten Maustaste auf ein Steuerelement oder das Formular selbst klickt. Sichtbare Steuerelemente und Form verfügen über eine ContextMenu-Eigenschaft, die die ContextMenu-Klasse an das Steuerelement bindet, das das Kontextmenü anzeigt. Ein ContextMenu kann von mehr als einem Steuerelement verwendet werden. Um spezifische Aufgaben für ein Steuerelement auszuführen oder die Darstellung des Kontextmenüs je nach Steuerelement zu variieren, können Sie anhand der SourceControl-Eigenschaft ermitteln, welches Steuerelement zuletzt das Kontextmenü angezeigt hat.
Sie sollten wissen, wann das Kontextmenü angezeigt wird, um Markierungen festlegen, Elemente deaktivieren und andere Menüaufgaben ausführen zu können, bevor das Kontextmenü dem Benutzer angezeigt wird. Sie können das Popup-Ereignis behandeln, um zu ermitteln, wann das Kontextmenü angezeigt wird.
Hinweis
Um in einem MainMenu angezeigte MenuItem-Objekte in einem ContextMenu wiederverwenden zu können, müssen Sie mithilfe der CloneMenu-Methode der MenuItem-Klasse eine Kopie des Menüs erstellen. Sie können außerdem mithilfe der MergeMenu-Methode der MenuItem-Klasse Menüelemente und deren Untermenüelemente in einem einzigen MenuItem-Objekt zusammenführen.
Hinweis zu Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows CE: Auf dem Pocket PC sollten keine Kontextmenüs in sekundären Formularen verwendet werden, weil sie nach Zerstörung der übergeordneten Formulare auch weiterhin angezeigt werden.
Beispiel
Im folgenden Codebeispiel wird ein Ereignishandler für das Popup-Ereignis von ContextMenu erstellt. Der Code des Ereignishandlers bestimmt, welches von zwei Steuerelementen (eine PictureBox mit dem Namen pictureBox1
und eine TextBox mit dem Namen textBox1
) das Kontextmenü anzeigt. Dem ContextMenu werden je nach Steuerelement, das ContextMenu zum Einblenden des Kontextmenüs veranlasst hat, die entsprechenden MenuItem-Objekte hinzugefügt. In diesem Beispiel wird vorausgesetzt, dass innerhalb des Formulars eine Instanz der ContextMenu-Klasse mit dem Namen contextMenu1
definiert ist. Es wird außerdem vorausgesetzt, dass einem Formular eine TextBox und eine PictureBox hinzugefügt und die ContextMenu-Eigenschaft dieser Steuerelemente auf contextMenu1
festgelegt wurde.
Private Sub MyPopupEventHandler(sender As System.Object, e As System.EventArgs)
' Define the MenuItem objects to display for the TextBox.
Dim menuItem1 As New MenuItem("&Copy")
Dim menuItem2 As New MenuItem("&Find and Replace")
' Define the MenuItem object to display for the PictureBox.
Dim menuItem3 As New MenuItem("C&hange Picture")
' Clear all previously added MenuItems.
contextMenu1.MenuItems.Clear()
If contextMenu1.SourceControl Is textBox1 Then
' Add MenuItems to display for the TextBox.
contextMenu1.MenuItems.Add(menuItem1)
contextMenu1.MenuItems.Add(menuItem2)
ElseIf contextMenu1.SourceControl Is pictureBox1 Then
' Add the MenuItem to display for the PictureBox.
contextMenu1.MenuItems.Add(menuItem3)
End If
End Sub 'MyPopupEventHandler '
private void MyPopupEventHandler(System.Object sender, System.EventArgs e)
{
// Define the MenuItem objects to display for the TextBox.
MenuItem menuItem1 = new MenuItem("&Copy");
MenuItem menuItem2 = new MenuItem("&Find and Replace");
// Define the MenuItem object to display for the PictureBox.
MenuItem menuItem3 = new MenuItem("C&hange Picture");
// Clear all previously added MenuItems.
contextMenu1.MenuItems.Clear();
if(contextMenu1.SourceControl == textBox1)
{
// Add MenuItems to display for the TextBox.
contextMenu1.MenuItems.Add(menuItem1);
contextMenu1.MenuItems.Add(menuItem2);
}
else if(contextMenu1.SourceControl == pictureBox1)
{
// Add the MenuItem to display for the PictureBox.
contextMenu1.MenuItems.Add(menuItem3);
}
}
private:
void MyPopupEventHandler( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Define the MenuItem objects to display for the TextBox.
MenuItem^ menuItem1 = gcnew MenuItem( "&Copy" );
MenuItem^ menuItem2 = gcnew MenuItem( "&Find and Replace" );
// Define the MenuItem object to display for the PictureBox.
MenuItem^ menuItem3 = gcnew MenuItem( "C&hange Picture" );
// Clear all previously added MenuItems.
contextMenu1->MenuItems->Clear();
if ( contextMenu1->SourceControl == textBox1 )
{
// Add MenuItems to display for the TextBox.
contextMenu1->MenuItems->Add( menuItem1 );
contextMenu1->MenuItems->Add( menuItem2 );
}
else if ( contextMenu1->SourceControl == pictureBox1 )
{
// Add the MenuItem to display for the PictureBox.
contextMenu1->MenuItems->Add( menuItem3 );
}
}
private void MyPopupEventHandler(Object sender, EventArgs e)
{
// Define the MenuItem objects to display for the TextBox.
MenuItem menuItem1 = new MenuItem("&Copy");
MenuItem menuItem2 = new MenuItem("&Find and Replace");
// Define the MenuItem object to display for the PictureBox.
MenuItem menuItem3 = new MenuItem("C&hange Picture");
// Clear all previously added MenuItems.
contextMenu1.get_MenuItems().Clear();
if (contextMenu1.get_SourceControl().Equals(textBox1)) {
// Add MenuItems to display for the TextBox.
contextMenu1.get_MenuItems().Add(menuItem1);
contextMenu1.get_MenuItems().Add(menuItem2);
}
else {
if (contextMenu1.get_SourceControl().Equals(pictureBox1)) {
// Add the MenuItem to display for the PictureBox.
contextMenu1.get_MenuItems().Add(menuItem3);
}
}
} //MyPopupEventHandler
Vererbungshierarchie
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Menu
System.Windows.Forms.ContextMenu
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
ContextMenu-Member
System.Windows.Forms-Namespace
Menu
MenuItem
MainMenu