Laden...

Wie bekomme ich heraus auf welchem Item das geklickt wurde?

Erstellt von Frokuss vor 5 Jahren Letzter Beitrag vor 5 Jahren 891 Views
F
Frokuss Themenstarter:in
158 Beiträge seit 2015
vor 5 Jahren
Wie bekomme ich heraus auf welchem Item das geklickt wurde?

Hallo Leute,

lange ist es her, dass ich das letzte mal was programmiert habe... Ist doch nicht wie Fahrradfahren 😄

Ich habe viele verschiedene Label, denen ich teilweise verschiedene Kontextmenüs zuweise. Das Kontextmenü erscheint und ist daher wunderbar, kann die Menüeinträge auswählen und zugeteilten Events werden auch gefeuert.

Aber ups... das Element, welches als Event-Sender erscheint ist nicht wie erwartet das Label, sondern der Contextmenü-Eintrag... Wie bekomme ich heraus auf welchem Item das Contextmenü "gewirkt" wurde?

Hier noch ein wenig Code:

//Exemplarisches Contextmenü welches hinzugefügt...
private ContextMenu ContextMenu_Kontakte_Headlines(){
	ContextMenu cm = new ContextMenu();
	cm.MenuItems.Add(lang["Kontakte_Fenster_CM_ListeUmbenennen"], EventContextMenuUser_ListeRename);
	cm.MenuItems.Add(lang["Kontakte_Fenster_CM_ListeLoeschen"], EventContextMenuUser_ListRemove);
	cm.MenuItems.Add(lang["Kontakte_Fenster_CM_ListeErstellen"], EventContextMenuUser_NewList);
	cm.MenuItems.Add(lang["Kontakte_Fenster_CM_ListeSubUmbenennen"], EventContextMenuUser_NewSubList);
	
	return cm;
}

private void EventContextMenuUser_ListeRename(object sender, EventArgs evt){
	Label lab = (Label)sender;//sender ist kein Label (d.h. CM-Element)
	string tag = lab.Tag.ToString();
	string txt = lab.Text;
	
	lab.Text = "Umbenannt...";
	lab.Tag = tag.Replace(txt, lab.Text);
	MessageBox.Show("TODO: Liste umbenennen");
}
//denke mal, dass dies trivial ist...
//CM Label zuweisen:
Label lab = new Label();
//...
lab.ContextMenu = cm;
//...
Controls.Add(lab);

Hoffe ihr könnt mir helfen 😃 Danke Frokuss

PS: Falls jemand meint, dass das Arbeiten mit dem Dictionary (lang) für den Text dumm ist... Du hast recht! Aber mit Windows 10 + SharpDevelop 5 + ResourceFiles gibt es Probleme --> Findet die AL.exe nicht --> kann nicht kompiliert werden

F
Frokuss Themenstarter:in
158 Beiträge seit 2015
vor 5 Jahren

Das sollte mit
>
auszulesen sein.

Danke. war genau das richtige... musste also wie folgt abändern:

MenuItem ml = (MenuItem)sender;
ContextMenu cm = (ContextMenu)ml.Parent;
Label lab = (Label)cm.SourceControl;