C# 2008 SP1Invoquer un délégué pour de nombreux contrôles
La fonction ci-dessous sera appelée à partir d'un autre thread. Ainsi, le contrôle devra être appelé pour que le bon thread qui les a créés puisse changer les propriétés.
Cependant, comme j'ai beaucoup de contrôles qui ont besoin d'être mis à jour. Je ne veux pas vraiment écrire tous ces délégués pour chacun. J'en ai fait un ci-dessous. Cependant, je pense que c'est beaucoup de code. Y a-t-il moyen de raccourcir cela?
Un grand merci,
public void SetIdleState(string callStatusMsg)
{
this.btnCallAnswer.Text = CATWinSIP_MsgStrings.Call;
this.btnEndCallReject.Text = CATWinSIP_MsgStrings.EndCall;
this.btnHoldUnhold.Text = CATWinSIP_MsgStrings.Hold;
this.btnCallAnswer.Enabled = true;
this.btnRedial.Enabled = true;
this.btnEndCallReject.Enabled = false;
this.btnHoldUnhold.Enabled = false;
if (this.statusDisplay1.InvokeRequired)
{
statusDisplay1.Invoke(new UpdateCallStatusDelegate(this.UpdateCallStatus), callStatusMsg);
}
else
{
this.statusDisplay1.CallStatus = callStatusMsg;
}
}
// Delegate for marshalling the call on the correct thread.
private delegate void UpdateCallStatusDelegate(string callStatusMsg);
private void UpdateCallStatus(string callStatusMsg)
{
this.statusDisplay1.CallStatus = callStatusMsg;
}
Je ne sais pas si je m'explique. Mais j'ai besoin de changer tous les contrôles dans cette fonction. Par exemple, j'en ai fait un qui était le contrôle de statusDislay pour montrer comment j'exécutais cela. Cependant, je ne veux pas écrire le même code comme ça pour chaque autre contrôle. c'est-à-dire tbnCallNumber, btnEndCallReject, btnHoldUnhold, etc. – ant2009