Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否将标签传递给不更新label.text的方法?_C#_Winforms - Fatal编程技术网

C# 是否将标签传递给不更新label.text的方法?

C# 是否将标签传递给不更新label.text的方法?,c#,winforms,C#,Winforms,我在winform中有一个标签,我正在尝试从开始按钮传递标签。这是我的密码: public void DirectLinkTask1(string DirectLinkText, string status) { { Start(status); string url = driver.Url; LogIn(status); while (string.IsNullOrEmpty(DirectLinkText))

我在winform中有一个标签,我正在尝试从开始按钮传递标签。这是我的密码:

public void DirectLinkTask1(string DirectLinkText, string status)
{
    {
        Start(status);
        string url = driver.Url;
        LogIn(status);
        while (string.IsNullOrEmpty(DirectLinkText))
        {
            status = "Waiting for direct link input...";
        }
        driver.Url = $"{DirectLinkText}";
        status = "Direct Link opened, adding to cart...";
        try
        {
            AddToCartDirectLink(DirectLinkText, status);
        }
        catch
        {
            status = "Direct Link Error";
        }
    }
}
按钮代码:

string status1 = labelStatus1.Text;
if (TaskTypeBox.Text.Contains("Keyword"))
{
     worker = new BackgroundWorker();
     worker.DoWork += (obj, ea) => KeywordTask1(txtKWDL1.Text, status1);
     worker.RunWorkerAsync();
}
else if (TaskTypeBox.Text.Contains("DirectLink"))
{
    worker = new BackgroundWorker();
    worker.DoWork += (obj, ea) => DirectLinkTask1(txtKWDL1.Text, status1);
    worker.RunWorkerAsync();
}
else
{
    labelStatus1.Text = "Please select task type";
}

标签根本没有更新,不知道为什么。我是C#的新手,我相信这是一个简单的错误。它将在else语句中更新为“请选择任务类型”,但仅此而已。提前谢谢你的帮助。请告诉我是否可以提供任何其他帮助:)

如果您试图更改
BackgroundWorker
中的标签文本,则需要引入
ProgressChanged
RunWorkerCompleted
eventhandlers


因此,即使是在不同线程上执行的BackgroundWorker,这两个EventHandler也将在主线程上执行,并具有对表单控件的正确访问权限。

看起来像
否则
分支永远不会被命中。第一个问题是,当您将标签文本传递给任务方法时,任务方法内部的参数永远不会更改之后,即使标签文本已更改。参数将是标签所说内容的快照,因此在while循环中不会有任何更改。是否有方法更改它,使其能够更改?您可以传递标签而不是其当前文本。但使用UI元素进行流控制似乎是一种奇怪的设计。您应该查看“视图模型”。