5 Stimmen

Kann ich ein mehrspaltiges Kontextmenü in .NET Windows Forms erstellen?

Ich möchte ein Kontextmenü erstellen, das mehrere Spalten hat. Im Grunde würde es so funktionieren:

First item  | [common option] | All Options >
Second item | [common option] | All Options >
Third item  | [common option] | All Options >
Fourth item | [common option] | All Options >

Es gibt also eine Reihe von Elementen (die zur Laufzeit generiert werden), jedes Element kann allein oder mit einer häufig verwendeten Option gestartet werden, oder Sie können ein Untermenü mit allen möglichen Optionen erhalten.

Wie kann ich das tun? Ich versuche, beides zu missbrauchen ContextMenuStrip y ContextMenu doch scheinen sie keine derartigen Optionen zu haben. Ich meine mich jedoch zu erinnern, dass ich irgendwo mehrspaltige Menüs gesehen habe...

Ich würde eine Windows Forms-Lösung bevorzugen, da ich keine Erfahrung mit WPF habe. Oh, und dieses Kontextmenü wird geöffnet, wenn Sie auf ein Symbol in der Notification Area (aka Systray) klicken.

5voto

Cody Gray Punkte 229889

Ich weiß nicht, ob ContextMenuStrip , das ein vollständig in .NET-Code erstelltes Menü ist, aber Sie können dies auch mit ContextMenu , das die systemeigenen Menüs umhüllt.

Der Schlüssel ist die Einstellung der MFT_MENUBREAK o MFT_MENUBARBREAK Flags für den/die einzelnen Menüpunkt(e), die als Eigenschaften in der Datei MenuItem Klasse Umschlag: MenuItem.Break y MenuItem.BarBreak .

Bei der ersten Variante wird der Menüpunkt einfach in eine neue Spalte gesetzt, während bei der zweiten Variante der Punkt in eine neue Spalte gesetzt und die Spalte durch eine geätzte vertikale Linie getrennt wird.

Aus dem MSDN-Beispiel:

public void CreateMyMenus()
{
    // Create three top-level menu items.
    MenuItem menuItem1 = new MenuItem("&File");
    MenuItem menuItem2 = new MenuItem("&New");
    MenuItem menuItem3 = new MenuItem("&Open");

    // Set the BarBreak property to display horizontally.
    menuItem2.BarBreak = true;
    menuItem3.BarBreak = true;

    // Add menuItem2 and menuItem3 to the menuItem1's list of menu items.
    menuItem1.MenuItems.Add(menuItem2);
    menuItem1.MenuItems.Add(menuItem3);
}

0voto

Ilya Kogan Punkte 21256

Menüs in WinForms können nur wie Bäume aufgebaut werden: Sie können ein Untermenü unter jedem Element haben. So können Sie die allgemeine Option als erstes Element des Untermenüs einfügen.

Es kann nicht anders aussehen, es sei denn, Sie entwerfen Ihr eigenes Steuerelement (und dann ist WPF für diese Aufgabe viel besser geeignet, aber WPF ist sehr zeitaufwändig zu erlernen).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X