将标签作为参数传递给函数

时间:2012-06-01 13:31:30

标签: c# winforms delegates

我正在创建一个实用程序,在执行一些计算后将少量记录插入到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;
}

1 个答案:

答案 0 :(得分:6)

您的标签只是表单的字段,只要您不实际调用方法或设置属性,就可以随意传递它们:

public void ChangeLabel(string msg, Label label) {
    if (label.InvokeRequired)
        label.Invoke(new MethodInvoker(delegate {
            label.Text = msg;
        }));
    else
        label.Text = msg;
}