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
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!?
ich versteh das problem nicht ganz.... wie du selbst sagst, hast du mit e.ClickedItem ja das geklickt Item, was willst du mehr?
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(...)
.
.
.
}
Hallo Muphin,
in sender steht das Item des Context-Menüs, nicht die TextBox. Also genau das, was du willst.
herbivore
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
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
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
Hallo Muphin,
es ist doch ganz einfach: merk dir beim Erzeugen das gewünschte Item und vergleiche mit == gegen das geklickte Item.
herbivore
Du meinst so oder?
if( e.ClickedItem == this.markiertToolStripMenuItemFelder )
(Ich glaub ich hab mich ziemlich blöd angestellt was das anbelangt X( )
Hallo Muphin,
Du meinst so oder?
jipp
herbivore
ansonsten kannst du doch, wenn du für ein bestimmtes item ne verabeitung anstossen willst, einfach das clicked ereignis des items reservieren.
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