У меня есть следующий пример рабочего кода:
public void ClearLogText() => this.TxtLog.Invoke((Action)delegate {this.TxtLog.Text = string.Empty;});
Как мне правильно добавить параметры?
public void SetControlText(Control control, string text) => this.Invoke((Action<Control, string>delegate (Control x, string y) {x.Text = y;});
Проблема, которая у меня есть, заключается в том, как использовать параметры в функции , в данном случае control
и text
.
Примечание. Метод мог быть любым. Меня волнует концепция, а не то, что делает метод. Это было первое, что пришло в голову.
Visual Studio жалуется на очевидное, а именно на то, что я не использую аргументы в методе.
Я уже знаю, как работать с Actions
, например, это ответ. Что меня сбивает, так это части Invoke
и delegate
.
private void NotifyUser(string message, BalloonTip.BalloonType ballType)
{
Action<string, BalloonTip.BalloonType> act =
(m, b) => BalloonTip.ShowBalloon(m, b);
act(message, ballType);
}
Я также хотел бы сохранить ответ в одной строке с помощью конструкции this.X.Invoke((Action)delegate...
, поэтому этот вопрос, иначе ответ был бы быть:
public delegate void DelegateSetControlText(Control control, string text);
public void SetControlText(Control control, string text)
{
if (true == this.InvokeRequired)
{
Program.DelegateSetControlText d = new Program.DelegateSetControlText(this.SetControlText);
this.Invoke(d, new object[] { control, text });
}
else
control.Text = text;
}