我正在创建一个实用程序,在执行一些计算后将少量记录插入到SQL中。我正在使用后台工作程序来阻止应用程序进入无响应状态。随着流程的工作,我需要更改几个标签值,我使用委托。是否可以将我的标签作为参数传递给具有委托的函数,以便我可以重用一些代码?
以下是我用来更改label2更改值的函数。对于label3,我使用了几乎相同的另一个函数。是否可以创建一个接受label作为参数的函数,以便我可以传递控件名称和所需的消息,并为我做更新?
以下是我更改label2的代码:
public void changelabel(string msg)
{
if (label2.InvokeRequired)
label2.Invoke(new MethodInvoker(delegate
{
label2.Text = msg;
}));
else
label2.Text = msg;
}
答案 0 :(得分:6)
您的标签只是表单的字段,只要您不实际调用方法或设置属性,就可以随意传递它们:
public void ChangeLabel(string msg, Label label) {
if (label.InvokeRequired)
label.Invoke(new MethodInvoker(delegate {
label.Text = msg;
}));
else
label.Text = msg;
}