Anzeige

[C#] Delegates....


NetBull

Erfahrenes Mitglied
#1
Moin,

arbeite mich nach Jahren der Pause wieder in C# ein.

Der folgende Code funktioniert, aber ich stelle mir die Frage ob ich mit bösen Überraschungen lebe wenn ich das so mache. Oder würdet Ihr dazu raten jedem Feld einen eigenen Delegaten und call back zu spendieren?
Code:
delegate void SwitchFieldsDelegator(bool aStatus);
        private void switchFields(bool aStatus)
        {
            if (this.txtSource.InvokeRequired)
            {
                SwitchFieldsDelegator d = new SwitchFieldsDelegator(switchFields);
                this.Invoke(d, new object[] { aStatus });
            }
            else
            {
                txtSource.Enabled = aStatus;
                txtDestination.Enabled = aStatus;
                txtSize.Enabled = aStatus;
                txtExtensions.Enabled = aStatus;
                btnAddSource.Enabled = aStatus;
                btnStart.Enabled = aStatus;
            }
        }
cu deAndro....
 
#2
Hallo,

sauberer dürfte auf jeden Fall die separate Abhandlung aller Eingabefelder sein. Da ich mal nicht davon ausgehe, dass du noch mit .NET1.1 arbeitest, kannst du dafür aber auch anonyme Delegaten verwenden:
C#:
if( this.txtSource.InvokeRequired )
{
    Invoke( (MethodInvoker)delegate { txtSource.Enabled = aStatus; } );
}
else
{
    txtSource.Enabled = aStatus
}  

// weitere Felder
Gruß
MCoder
 

Spyke

Capoeirista
Premium-User
#3
Ich würde schon die darstellung, soweit nicht überhand oder unübersichtlich wird, über eine Methode laufen lassen, wäre für mich jetzt so die wartbarste/pflegbarste idee.

Ansonsten kann mans wirklich nur sagen wenn man wirklich denn genauen Anwendungsfall kennt.
Aber, finde ich, dagegen spricht so erstmal nixs, jedenfalls besser als später zig stellen abklappern zu müssen weil sich irgendwas geändert hat.

Ein status ändern X Controls, warum dann nicht auch alle auf einmal anpassen, so spart man sich theoretisch auch weitere Methodeaufrufe.
 
Anzeige

Neue Beiträge

Anzeige