Autor Beitrag
r0land
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 11.05.09 09:55 
Hi

Wie kann ich zB bei dem Click-Ereignis eines ToolStripMenuItem's von sender die Eigenschaften .name oder .text auslesen?

ausblenden Quelltext
1:
2:
3:
4:
void ToolStripMenuItem11Click(object sender, EventArgs e)
{

}


sender.name oder sender.text gibts nicht... das kenne ich schon von VB. Wobei ich meiner Meinung nach trotzdem auf sender.name zugreifen konnte und darüber dann an die Daten kam.

Das ist mein erster Gehversuch mit C#... und ich hätte nicht gedacht, daß ich daran schon verzweifeln würde :/

Achso... ich verwende SharpDevelop3 und .Net 3.5

Mag mir jemand nen Tipp geben?

Grüße
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Mo 11.05.09 10:04 
du musst sender nach ToolStripMenuItem casten:
ausblenden C#-Quelltext
1:
ToolStripMenuItem s = (ToolStripMenuItem)sender;					
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 11.05.09 10:16 
Sicherer ist folgende Variante:
ausblenden C#-Quelltext
1:
2:
ToolStripMenuItem s = sender as ToolStripMenuItem;
if (s != null) { ... };

Hintergrund: Wenn sender wider Erwarten nicht dem gewünschten Typ entspricht, wird bei "as" null geliefert, was abgeprüft werden kann; bei der "einfachen" Variante gibt es aber eine Exception - bäng.

Gruß Jürgen
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Mo 11.05.09 10:24 
ja allerdings sollte dieser Fall bei einem Event nicht auftreten ( abgesehen davon dass deine Variante zwar sicherer, dafür langsamer ist )
r0land Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 11.05.09 16:01 
Klasse - danke euch beiden!
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 11.05.09 17:40 
user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
bei der "einfachen" Variante gibt es aber eine Exception - bäng.
Natürlich, alles andere wäre auch fatal. Exceptions sollen schließlich signalisieren, dass eine Methode das, wozu sie gedacht ist, nicht erfüllen kann. Wenn ich einen Handler schreibe, der den Text des aufgerufenen Items verarbeiten soll, dann will ich auch darüber informiert werden, wenn sie es wider Erwarten nicht kann :) . Ein as wäre eine Schwächung des Contracts der Methode, die gut begründet werden muss, wenn es beispielsweise eben Sinn macht, den Handler auch für andere Komponenten zu verwenden.

user profile iconGreenberet hat folgendes geschrieben Zum zitierten Posting springen:
abgesehen davon dass deine Variante [...] langsamer ist
Abgesehen davon, dass sich der Code auf einer Ebene befindet, in der das Wort Performance nichts zu suchen hat ;) , wüsste ich nicht, warum das zutreffen sollte. In Delphi mag das stimmen, aber .NET kennt ja dessen "harte Casts" gar nicht.

_________________
>λ=