Laden...

Wie herausfinden ob bestimmtes ContextMenuStrip Item geklickt wurde?

Erstellt von Muphin vor 16 Jahren Letzter Beitrag vor 16 Jahren 4.062 Views
M
Muphin Themenstarter:in
174 Beiträge seit 2006
vor 16 Jahren
Wie herausfinden ob bestimmtes ContextMenuStrip Item geklickt wurde?

Guten Tag!
Ich hab ein contextMenuStrip und möchte im ItemClicked Event überprüfen ob ein bestimmtes Item geklickt wurde. Ich bin bisher nur auf die Idee gekommen auf den Text des Items zu prüfen also z.B. so:

e.ClickedItem.Text == "markiert"

Ich denke aber das es da doch bestimmt eine bessere Lösung geben muss!
Wär super wenn ihr mir ein paar entsprechende denkanstöße habt!

Gruß Muphin

738 Beiträge seit 2007
vor 16 Jahren

der "sender" sollte dir weiterhelfen!

M
Muphin Themenstarter:in
174 Beiträge seit 2006
vor 16 Jahren

Mit dem sender krieg ich ja das Object indem das Context Menu geöffnet wurde, in meinem Fall ist das ne TextBox, wüsste jetzt nich wie mir das helfen soll auf das entsprechende Item des Context Menus zu kommen!?

738 Beiträge seit 2007
vor 16 Jahren

ich versteh das problem nicht ganz.... wie du selbst sagst, hast du mit e.ClickedItem ja das geklickt Item, was willst du mehr?

M
Muphin Themenstarter:in
174 Beiträge seit 2006
vor 16 Jahren

Ja, aber dann muss ich eben noch überprüfen ob es ein ganz bestimmtes Item ist und da liegt ja das Problem!
Das ClickedItem kann ja ein ganz beliebieges des ContextMenus sein, aber nur wenn es ein ganz bestimmtest ist soll eben der Code ausgeführt werden und sonst eben ein anderer Code!


      private void contextMenuStripFelder_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
      {
         TextBox a_txtBox = (TextBox)((ContextMenuStrip)sender).SourceControl;

         if (e.ClickedItem.Text == "markiert")
         {...
         }
         else(...)
         .
         .
         .
      }

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Muphin,

in sender steht das Item des Context-Menüs, nicht die TextBox. Also genau das, was du willst.

herbivore

M
Muphin Themenstarter:in
174 Beiträge seit 2006
vor 16 Jahren

Sorry, ich hab da heut mittag ja mal mächtig was verpeilt, die SourceControl vom sender is schließlich die TextBox, steht sogar so in dem von mir geposteten code-schnippsel!
Aber der sender ist doch nicht das Item, sondern das ContextMenuStrip und mit e.ClickedItem bekomm ich dann das Item das geklickt wurde! Wobei das ja auch nich mein Problem is, sondern das ich ne etwas intelligentere Methode wollt um zu überprüfen ob genau dieses eine bestimmte Item geklickt wurde oder ein anderes! Ich finds eben nicht so schön das über den Text zu machen der in dem Item steht!
Es geht hier ja um das ItemClicked Event des ContextMenuStrip und nicht um das Click Event des MenuItem!
Hatte gedacht das Code-Beispiel wär dafür gut genug!

Gruß Muphin

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Muphin,

Ich finds eben nicht so schön das über den Text zu machen der in dem Item steht!

das ist auch nicht schön und das musst du auch nicht.

ob genau dieses eine bestimmte Item geklickt wurde oder ein anderes!

Du kannst das Item mit == mit dem gewünschten vergleichen.

herbivore

M
Muphin Themenstarter:in
174 Beiträge seit 2006
vor 16 Jahren

Also mir ist jetzt noch eingefallen es über den Namen zu machen also

e.ClickedItem.Name == "..."

aber das kommt ja fast aufs gleiche raus!
Ich könnte es auch noch mit deb contextMenuStripFelder.Items vergleichen, aber dort das bestimmte herauszusuchen ginge soweit ich es bisher herausgefunden habe auch nur über den Namen!
Gibt es sonst noch möglichkeiten?

Gruß Muphin

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Muphin,

es ist doch ganz einfach: merk dir beim Erzeugen das gewünschte Item und vergleiche mit == gegen das geklickte Item.

herbivore

M
Muphin Themenstarter:in
174 Beiträge seit 2006
vor 16 Jahren

Du meinst so oder?


if( e.ClickedItem == this.markiertToolStripMenuItemFelder )

(Ich glaub ich hab mich ziemlich blöd angestellt was das anbelangt X( )

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Muphin,

Du meinst so oder?

jipp

herbivore

D
6 Beiträge seit 2007
vor 16 Jahren

ansonsten kannst du doch, wenn du für ein bestimmtes item ne verabeitung anstossen willst, einfach das clicked ereignis des items reservieren.

M
Muphin Themenstarter:in
174 Beiträge seit 2006
vor 16 Jahren

danke für den Tipp, aber genau das wollte ich vermeiden!
Ich hatte das Prog vorher mit .Net 1.1 programmiert und dort musste ich die einzelnen clicked Events der Items nehmen! Mit dem ItemClicked Event des MenuStrip lässt sich das ganze aber schöne umsetzen!

Gruß Muphin