it-swarm.com.de

Hinzufügen eines Rechtsklickmenüs zu einem Element

Ich habe eine Weile nach einem einfachen Rechtsklick-Menü für ein einzelnes Element gesucht. Wenn ich beispielsweise mit der rechten Maustaste auf ein Bild klicke, möchte ich, dass ein kleines Menü mit meinen eigenen Etiketten angezeigt wird: Hinzufügen, Entfernen usw. Wenn jemand helfen könnte, wäre ich sehr dankbar.

Danke fürs schauen.

Hier ist der vollständige Code:

    ContextMenu cm = new ContextMenu();             
    cm.MenuItems.Add("Item 1", new EventHandler(Removepicture_Click));             
    cm.MenuItems.Add("Item 2", new EventHandler(Addpicture_Click));              
    pictureBox1.ContextMenu = cm; 
36
Marshal

Fügen Sie Ihrem Formular ein Kontextmenü hinzu, und weisen Sie es in den Eigenschaften des Steuerelements unter ContextMenuStrip zu. Hoffe das hilft :).

Hoffe das hilft:

ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("Item 1");
cm.MenuItems.Add("Item 2");

pictureBox1.ContextMenu = cm;
65
Yuki Kutsuya

Dies ist eine umfassende Antwort auf diese Frage. Ich habe dies getan, weil diese Seite in den Google-Suchergebnissen hoch ist und die Antwort nicht detailliert genug ist. Dieser Beitrag setzt voraus, dass Sie mit der Verwendung von Visual Studio C # -Formularen vertraut sind. Dies basiert auf VS2012.

  1. Ziehen Sie zunächst einen ContextMenuStrip auf das Formular. Es wird einfach in die obere linke Ecke eingefügt, wo Sie Ihre Menüelemente hinzufügen und nach Belieben umbenennen können.

  2. Sie müssen den Code anzeigen und ein Ereignis selbst in das Formular eingeben. Erstellen Sie ein Mouse-Down-Ereignis für das betreffende Element, und weisen Sie ihm so ein Rechtsklick-Ereignis zu (ich habe den ContextMenuStrip "RightClickMenuStrip" genannt):

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
    switch (e.Button)
        {
            case MouseButtons.Right:
            {
                rightClickMenuStrip.Show(this, new Point(e.X, e.Y));//places the menu at the pointer position
            }
            break;
        }
    }
    
  3. Weisen Sie den Event-Handler manuell dem form.designer zu (Sie müssen möglicherweise ein "using" für System.Windows.Forms hinzufügen; Sie können es einfach auflösen):

    this.pictureBox1.MouseDown += new MouseEventHandler(this.pictureBox1_MouseDown);
    
  4. An diesem Punkt müssen Sie lediglich auf jedes Menüelement doppelklicken und die gewünschten Vorgänge für jedes Klickereignis auf dieselbe Weise ausführen, wie Sie es auch für andere Schaltflächen tun würden.

Dies ist der grundlegende Code für diesen Vorgang. Sie können es natürlich modifizieren, um es an Ihre Kodierungspraktiken anzupassen.

22
Cheesus Toast

Wenn Sie Visual Studio verwenden, gibt es auch eine GUI-Lösung:

  1. Fügen Sie aus der Toolbox ein ContextMenuStrip hinzu.
  2. Wählen Sie das Kontextmenü und fügen Sie die Elemente mit der rechten Maustaste hinzu
  3. Für jedes Element setzen Sie die Klickereignisse auf die entsprechenden Funktionen
  4. Wählen Sie das Formular/die Schaltfläche/das Bild/etc (beliebiges Element) aus, mit dem das Rechtsklick-Menü verbunden wird
  5. Legen Sie seine ContextMenuStrip -Eigenschaft auf das von Ihnen erstellte Menü fest. 
12
Dorku

Nachdem Sie gerade damit herumgespielt haben, ist es nützlich zu wissen, dass die eX/eY-Punkte relativ zum Steuerelement sind. Wenn Sie also (wie ich) ein Kontextmenü zu einer Listenansicht oder etwas Ähnlichem hinzufügen, möchten Sie es mit anpassen der Ursprung des Formulars Im folgenden Beispiel habe ich 20 zu x/y hinzugefügt, so dass das Menü etwas rechts und unter dem Cursor erscheint.

cmDelete.Show(this, new Point(e.X + ((Control)sender).Left+20, e.Y + ((Control)sender).Top+20));
0
Paul