Wenn Sie Ihr Popup von einem Toolstrip gestartet haben, können Sie den Toolstrip ableiten und diesen Code hinzufügen.
override protected void OnItemClicked(ToolStripItemClickedEventArgs e)
{
if (this.Items.Count == 0)
base.OnItemClicked(e);
// else do nothing
}
Die ContextMenu-Klasse verfügt jedoch nicht über OnItemClicked, aber onPopup. Ich habe versucht, es nicht, aber man könnte versuchen, die ContextMenu Subklassen
public class MyContextMenu : ContextMenu
{
override protected void OnPopUp(EventArgs e)
{
if (this.MenuItems.Count == 0)
base.OnPopUp(e);
// else do nothing
}
}
wenn das nicht funktioniert, dann könnten Sie die beiden Show Methoden außer Kraft setzen
public class MyContextMenu : ContextMenu
{
override protected void Show (Control c, Point p)
{
if (this.MenuItems.Count == 0)
base.Show (c, p) ;
// else do nothing
}
override protected void (Control c, Point p, LeftRightAlignment z)
{
if (this.MenuItems.Count == 0)
base.Show (c, p, z) ;
// else do nothing
}
}
Es soll eine kleine Anwendung, die Zugang gibt zu den meisten verwendeten Ordnern, Dateien, Websites usw. sehr leicht. Meine Idee ist ein Taskleistensymbol mit einem Rechtsklick-Menü, da ich keine anderen Steuerelemente sehen kann, die sowohl leicht zugänglich als auch versteckt sind, wenn sie nicht benutzt werden. Es gibt keine Möglichkeit, das Ereignis zu erhöhen, dann? –
Ich glaube nicht, dass es einen Hacker gibt. Sie könnten jedoch unter jedem Verzeichnis einen "Blatt" -Menüeintrag mit dem Namen "[dieses Verzeichnis]" hinzufügen. Wie würden Sie den Unterschied zwischen einem Benutzer, der auf die Navigation klickt, und dem Klicken auf "Dieses Verzeichnis öffnen" erkennen? –
Ja, der Menüeintrag "Blatt" ist die aktuelle Implementierung, aber ich mag es nicht sehr. Der Benutzer sollte nicht klicken müssen, um zu navigieren. Die Popup-Menüs sind automatisch (Doppelklick könnte eine Option sein, um Verwirrung zu vermeiden - wenn das Doppelklick-Ereignis unterstützt wurde). –