Entwickler-Ecke

WinForms - anzeigen des kontextmenüs verhindern


javax - Di 08.07.08 16:28
Titel: anzeigen des kontextmenüs verhindern
hallo
habe eine frage zum thema kontextmenu.

ich habe ein kontextmenü für eine liste welches ein item hat um den gewählten listeneintrag zu löschen.
das kontextmenü soll aber nicht angezeigt werden wenn die liste leer ist oder kein eintrag in der liste ausgewählt worden ist.

wäre echt froh wenn mir jemand ein paar lösungsansätze geben könnte
mfg


Christian S. - Di 08.07.08 16:35

Hallo!

Erweitere doch Deinen Titel ein bisschen, damit er mehr über das Thema aussagt. Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir! :-)

Zu Deinem Problem: Das Kontextmenü sollte das Opening-Event haben. In diesem kannst Du e.Cancel = true; setzen, um das Öffnen zu unterbinden.

Grüße
Christian


javax - Di 08.07.08 16:45

danke für deine antwort
das opening event ist popup.
also kann man es doch mittels diesem event verhindern?

leider bekomme ich als zweiten übergabeparameter EventArgs welcher kein Cancel property hat.
in welchen typ muss ich EventArgs casten?


Christian S. - Di 08.07.08 16:49

user profile iconjavax hat folgendes geschrieben:
das opening event ist popup.

Nein, das Opening-Event ist Opening! :-)

user profile iconjavax hat folgendes geschrieben:
leider bekomme ich als zweiten übergabeparameter EventArgs welcher kein Cancel property hat.
in welchen typ muss ich EventArgs casten?
Nein, Du musst das richtige Event benutzen ;-)

Dein ContextMenuStrip hat ein Opening-Event. Der Handler für dieses Event hat als zweiten Parameter ein CancelEventArgs.


javax - Di 08.07.08 16:57

hmm.. finde kein opening menu.
liegt aber wohl daran dass ich für windows mobile progge. da hat ne liste auch kein Click-Event :evil: :evil:
CancelEventArgs kennt er zwar aber EventArgs können leider nicht in diesen typ gecastet werden.

eine andere frage... was ist ein ContextMenuStrip??


Christian S. - Di 08.07.08 17:02

user profile iconjavax hat folgendes geschrieben:
liegt aber wohl daran dass ich für windows mobile progge. da hat ne liste auch kein Click-Event :evil: :evil:

Und Du meinst nicht, dass diese Information vielleicht wertvoll sein könnte? :autsch: Da kann ich ja lange Lösungen fürs normale Framework posten ... :roll:

user profile iconjavax hat folgendes geschrieben:
eine andere frage... was ist ein ContextMenuStrip??
Etwas, welches es beim Compact Framework nicht gibt, da heißt es einfach ContextMenu ...

Ich schätze, dann kannst Du nur die ContextMenu-Eigenschaften der Listbox auf null setzen, wenn nichts selektiert ist und dann wieder zurücksetzen, wenn was selektiert wird. Das machst Du dann am Besten im SelectedIndexChanged-Ereignis der Listbox.


javax - Mi 09.07.08 08:07

user profile iconChristian S. hat folgendes geschrieben:
user profile iconjavax hat folgendes geschrieben:
liegt aber wohl daran dass ich für windows mobile progge. da hat ne liste auch kein Click-Event :evil: :evil:

Und Du meinst nicht, dass diese Information vielleicht wertvoll sein könnte? :autsch: Da kann ich ja lange Lösungen fürs normale Framework posten ... :roll:

user profile iconjavax hat folgendes geschrieben:
eine andere frage... was ist ein ContextMenuStrip??
Etwas, welches es beim Compact Framework nicht gibt, da heißt es einfach ContextMenu ...

Ich schätze, dann kannst Du nur die ContextMenu-Eigenschaften der Listbox auf null setzen, wenn nichts selektiert ist und dann wieder zurücksetzen, wenn was selektiert wird. Das machst Du dann am Besten im SelectedIndexChanged-Ereignis der Listbox.


danke für die antwort.
naja... die unterschiede zwischen comapct und normalem framework halten sich in grenzen.
wenn man compact framework erwähnt meldet sich meistens keiner . :wink:
war bis jetzt halt immer so...


edit:
mit auf null setzten geht leider auch nicht so einfach.
leite mir halt jetzt einfach ne klasse von ContextMenu ab und überschreibe die Show-Methode


new edit:
hmm.. irgendwie wird meine überschriebene Show Methode nciht aufgerufen.
Was könnten hier die fehlerquellen sein?


Th69 - Mi 09.07.08 09:49

Deine Show-Methode wird nicht aufgerufen, da Show nicht virtuell ist.
Aber der Vorschlag mit "auf null setzen" dürfte der Sinnvollste sein...

Und zu
Zitat:
die unterschiede zwischen comapct und normalem framework halten sich in grenzen.

Also wenn ich so in die Hilfe schaue, dann ist aber nur ein Bruchteil der Funktionen auch für das CompactFramework definiert, daher ist diese Info schon sehr wichtig!


javax - Mi 09.07.08 11:28

so habe es geschafft das problem zu lösen.

falls jemand mal das gleiche problem hat wie ich...


C#-Quelltext
1:
2:
3:
4:
5:
6:
private void OnPopUpContextMenu(object sender, EventArgs e)
        {
            listAnzeige.Update();
            if (listAnzeige.SelectedIndex < 0)
                listAnzeige.ContextMenu = contextMenu1;
        }


Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt