ContextMenuStrip.Show wartet nicht

30/08/2008 - 09:41 von Tom Flemming | Report spam
Hallo,

ich habe eine Frage zu dem ContextMenuStrip.

Private Sub PopupShow()
'ContextMenü erstellen
Dim pop As New ContextMenuStrip
AddHandler pop.ItemClicked, AddressOf ContextMenuStrip_ItemClicked
pop.Items.Add("Item 1")
pop.Items.Add("Item 2")
pop.Items.Add("Item 3")
' ContextMenü an der aktuellen Mausposition anzeigen
pop.Show(Cursor.Position)
End Sub

Private Sub ContextMenuStrip_ItemClicked(ByVal sender As Object, _
ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs)
Debug.Print(e.ClickedItem.ToString)
End Sub

Das Kontextmenü wird angezeigt, ich kann ein Item auswàhlen und bekomme es in
ContextMenuStrip_ItemClicked auch sauber angezeigt.
Soweit so gut.
Das Problem ist, daß das Kontextmenü nicht modal angezeigt wird, show wartet
nicht und mein Programm làuft weiter, ich kann beliebige andere Steuerelemente
und Menüs anwàhlen wàhrend das Kontextmenü sichtbar bleibt. Es wird erst
geschlossen, wenn ich tatsàchlich ein Item anklicke.
Normalerweise sollte das Kontextmenü modal angezeigt sein und die Escape-Taste
oder ein Mausklick außerhalb des Kontextmenüs sollte dieses abbrechen und
schliessen.

Wie kann ich denn dieses Verhalten erreichen?

Viele Grüße
Tom
 

Lesen sie die antworten

#1 Thorsten Doerfler
30/08/2008 - 12:30 | Warnen spam
Tom Flemming schrieb:
ich habe eine Frage zu dem ContextMenuStrip.

Private Sub PopupShow()
'ContextMenü erstellen
Dim pop As New ContextMenuStrip
AddHandler pop.ItemClicked, AddressOf ContextMenuStrip_ItemClicked
pop.Items.Add("Item 1")
pop.Items.Add("Item 2")
pop.Items.Add("Item 3")
' ContextMenü an der aktuellen Mausposition anzeigen
pop.Show(Cursor.Position)
End Sub

Private Sub ContextMenuStrip_ItemClicked(ByVal sender As Object, _
ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs)
Debug.Print(e.ClickedItem.ToString)
End Sub

Das Kontextmenü wird angezeigt, ich kann ein Item auswàhlen und bekomme es in
ContextMenuStrip_ItemClicked auch sauber angezeigt.
Soweit so gut.
Das Problem ist, daß das Kontextmenü nicht modal angezeigt wird, show wartet
nicht und mein Programm làuft weiter



Richtig. Dafür hat ein ContextMenuStrip entsprechende Ereignisse, die
eintreten, wenn es geschlossen wird.

ich kann beliebige andere Steuerelemente
und Menüs anwàhlen wàhrend das Kontextmenü sichtbar bleibt. Es wird erst
geschlossen, wenn ich tatsàchlich ein Item anklicke.



Das kann ich nicht nachvollziehen in einem neuen, leeren Projekt mit
Deinem oben angegebenen Code.

Normalerweise sollte das Kontextmenü modal angezeigt sein und die Escape-Taste
oder ein Mausklick außerhalb des Kontextmenüs sollte dieses abbrechen und
schliessen.



Und das macht es normalerweise auch.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen