C# 2008 SP1Delegate für viele Steuerelemente aufrufen
Die folgende Funktion wird von einem anderen Thread aufgerufen. Daher muss das Steuerelement selbst aufgerufen werden, damit der richtige Thread, der sie erstellt hat, die Eigenschaften ändern kann.
Allerdings habe ich viele Steuerelemente, die aktualisiert werden müssen. Ich möchte nicht wirklich alle diese Delegierten für jeden einzelnen schreiben. Ich habe einen darunter gemacht. Aber ich denke, das ist eine Menge Code. Gibt es da überhaupt eine Verkürzung?
Vielen Dank,
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;
}
Nicht sicher, ob ich mich erkläre. Aber ich muss alle Kontrollen in dieser Funktion ändern. Zum Beispiel habe ich eine, die das StatusDislay Steuerelement war, um zu zeigen, wie ich das ausführte. Ich möchte jedoch nicht den gleichen Code für jede andere Steuerung schreiben. d.h. tbnCallNumber, btnEndCallReject, btnHoldUnhold usw. – ant2009