Benutzer mit den meisten Antworten
C# Ausdruck übersetzen

Frage
-
Hallo Zusammen,
ich bin in C# nicht ganz so fit wie in VB.NET und schaffe es leider nicht folgende Zeile in VB zu übersetzen.
Google half leider nicht und ein C# Buch habe ich auch gerade nicht zur Hand.
Für den Zusammenhang habe ich mehrere Zeilen eingefügt. Es handelt sich aber nur um die
Fett markierte Zeile. Ich vermute das es sich hier um einen Lambda Ausdruck handelt. Es wäre sehr nett
wenn mir hier jemand auf die Sprünge helfen könnte.
Vielen Dank schon mal im Voraus.
this.IsEnabledChanged += (s, e) => RefreshContent(); public WindowButton() { InitializeComponent(); this.IsEnabledChanged += (s, e) => RefreshContent(); } /// <summary> /// Set's the content of the button according to the current 'IsEnabled' state of the button /// </summary> protected void RefreshContent() { // Button is enabled if (this.IsEnabled) this.ActiveContent = this.Content; else this.ActiveContent = this.ContentDisabled; }
- Bearbeitet Robert BreitenhoferModerator Montag, 1. November 2010 18:55 Formatierung
Antworten
-
Hallo Jens,
ja das ist ein Lambda-Ausdruck
und mit Visual Basic 2010 darfst Du so etwas auch schreiben:Public Sub New() AddHandler MyBase.IsEnabledChanged, Sub(s, e) RefreshContent() End Sub End Sub Protected Sub RefreshContent() ' Button is enabled If (MyBase.IsEnabled) Then Me.ActiveContent = Me.Content Else Me.ActiveContent = Me.ContentDisabled End If End Sub
Falls Du Visual Basic 2008 (oder früher einsetzt) oder so ein "neumodisches Zeugs"
nicht magst, ginge es auch konventionell:Public Sub New() AddHandler MyBase.IsEnabledChanged, AddressOf RefreshContent End Sub Protected Sub RefreshContent(ByVal sender As Object, ByVal e As DependencyPropertyChangedEventArgs) ' Button is enabled ' ... End Sub
Beachte, dass dabei die Signatur des Methoden-Aufrufs angepasst werden muss -
ich bin von einem WPF Steuerelement ausgegangen.Für weitere Neuigkeiten siehe Neues in Visual Basic 2010
Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Montag, 1. November 2010 18:56
Alle Antworten
-
Hallo Jens,
ja das ist ein Lambda-Ausdruck
und mit Visual Basic 2010 darfst Du so etwas auch schreiben:Public Sub New() AddHandler MyBase.IsEnabledChanged, Sub(s, e) RefreshContent() End Sub End Sub Protected Sub RefreshContent() ' Button is enabled If (MyBase.IsEnabled) Then Me.ActiveContent = Me.Content Else Me.ActiveContent = Me.ContentDisabled End If End Sub
Falls Du Visual Basic 2008 (oder früher einsetzt) oder so ein "neumodisches Zeugs"
nicht magst, ginge es auch konventionell:Public Sub New() AddHandler MyBase.IsEnabledChanged, AddressOf RefreshContent End Sub Protected Sub RefreshContent(ByVal sender As Object, ByVal e As DependencyPropertyChangedEventArgs) ' Button is enabled ' ... End Sub
Beachte, dass dabei die Signatur des Methoden-Aufrufs angepasst werden muss -
ich bin von einem WPF Steuerelement ausgegangen.Für weitere Neuigkeiten siehe Neues in Visual Basic 2010
Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Montag, 1. November 2010 18:56
-
Hallo Elmar,
vielen vielen Dank für die Mühe. Ich nutze seit kurzem VS 2010, muss aber zugeben das ich noch nicht die Zeit hatte mich über alle Neuerungen zu informieren. Und ja es handelt sich um WPF. Man muss sich wirklich sehr damit beschäftigen um am Ball zu bleiben :-)
Jetzt wo ich das lese, erscheint mir das auch logisch. Nochmals Danke und einen schönen Sonntag Abend noch.
Gruß
Jens