如何在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);

然而,我一直得到错误。我知道我的逻辑是关闭的,因为我的重载方法,但我不确定如何获得一个标签来更新它的文本在一个方法调用

如何在c#中重载标签方法

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_programstring类型,但您将其视为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"; }
}