如何在c#中重载标签方法
本文关键字:重载 标签 方法 | 更新日期: 2023-09-27 18:13:25
我对c#和编程都是新手,所以如果能有详细的解释会更好的理解。
我有超过50个标签,我需要更新我的程序的进展。我想要一个带有重载字符串的方法来更新这些标签。
例如:
label1.Text = "Waiting";
label2.Text = "Waiting";
label3.Text = "waiting";
我想在一个方法中更新这些标签。像这样:
private void updateStatus(string some_program, string label_number)
{
if (some_program== true)
{ label_number.Text = "Completed"; }
else
{ label_number.Text = "Failed"; }
}
当我运行这个方法时,我希望它看起来像这样:
updateStatus("file1", label2);
然而,我一直得到错误。我知道我的逻辑是关闭的,因为我的重载方法,但我不确定如何获得一个标签来更新它的文本在一个方法调用
updateStatus("file1", label2);
行期望您传入一个Label。但是,您定义的函数void updateStatus(string some_program, string label_number)
声明它需要两个参数,它们都是字符串。从您试图修改label_number参数的Text属性的事实可以清楚地看出,您实际上是想将函数定义为:
private void updateStatus(string some_program, Label label_number)
{
if (some_program== true)
{ label_number.Text = "Completed"; }
else
{ label_number.Text = "Failed"; }
}
当然,这仍然不能编译,因为你也处理some_program
,它被定义为一个字符串,如果它是一个布尔值。字符串(具体来说,在您的示例中,字符串"file1")为真或假意味着什么?真的,你应该阅读编译器给你的错误-它可能在抱怨它不能将字符串转换为bool,并且该字符串没有属性"Text",这两个都是正确的。
正如Hans在评论中所说,确保将标签对象作为参数传递给方法,而不是字符串,例如:
private void updateStatus(string some_program, Label label_number) {
如果这不能解决问题,请发布您收到的错误消息。
您的updateStatus()
方法为两个参数都接受字符串,但您将第二个Label
传递给它。
另一个问题是some_program
是string
类型,但您将其视为bool
。你没有给出足够的上下文让我弄清楚你真正想做什么,但我假设你想做一个字符串比较。
试试这个:
private void updateStatus(string some_program, Label label)
{
if (some_program == "some string to compare with")
{ label.Text = "Completed"; }
else
{ label.Text = "Failed"; }
}
然后你可以通过传递Label
来调用它:
updateStatus("file1", label2);
如果你传递的第一个参数是bool,第二个参数是string,那么像这样修改你的代码:
private void updateStatus(bool some_program, string label_number)
{
if (some_program == true)
{ label_number.Text = "Completed"; }
else
{ label_number.Text = "Failed"; }
}
或
如果第一个参数是字符串,第二个参数是字符串,那么像这样修改代码:
private void updateStatus(string some_program, string label_number)
{
if (some_program == "What is your string value")
{ label_number.Text = "Completed"; }
else
{ label_number.Text = "Failed"; }
}