相关疑难解决方法(0)

为什么不控制更新/刷新中间进程

我有一个带有statusLabel的Windows窗体(C#.NET),我似乎无法在事件处理程序方法的过程中更新.我的代码看起来像这样......

    void Process_Completed(object sender, EventArgs e)
    {

        string t = "Process is finished!";
        this.Invoke(new StatusLabelUpdator(updateStatusLabel), new object[] { t });
    }

    void Process_Started(object sender, EventArgs e)
    {
        string t = "Process has begun";
        this.Invoke(new StatusLabelUpdator(updateStatusLabel), new object[] { t });
    }

    private delegate void StatusLabelUpdator(string text);
    private void updateStatusLabel(string text)
    {
        StatusLabel1.Text = text;
        statusStrip1.Invalidate();
        statusStrip1.Refresh();
        statusStrip1.Update();
    }
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,一旦进程启动,就会触发Process_Started方法,几秒钟后会触发Process_Completed方法.由于某种原因,我不能让状态标签显示"过程已经开始".它只显示"过程完成!".正如您所看到的,我已尝试使包含状态标签但未成功的状态条无效,刷新和更新.我无法在statuslabel本身上调用update/refresh/invalidate,因为这些方法不可用.我究竟做错了什么?

添加信息:

通过单击窗体上的按钮启动"进程",该窗体在单独的类中调用方法,如下所示:

public void DoSomeProcess()
{
    TriggerProcessStarted();
    System.Threading.Thread.Sleep(2000);   // For testing..
    TriggerProcessComplete();
}
Run Code Online (Sandbox Code Playgroud)

在TriggerProcessxxxx方法中,我使用此代码触发事件...

var EventListeners = EH.GetInvocationList();    //EH is the …
Run Code Online (Sandbox Code Playgroud)

.net c# controls refresh

12
推荐指数
1
解决办法
3万
查看次数

标签 统计

.net ×1

c# ×1

controls ×1

refresh ×1