做工作时,TabPage被选中,而不会导致油漆延迟/延迟

本文关键字:延迟 工作 TabPage | 更新日期: 2023-09-27 17:53:21

我想做简短的工作(<300ms)当某个TabPage在给定的TabControl中被选中时。目前,当TabPage被选中时,我执行工作方法,但是TabPage直到工作完成才进行绘制,因此,在工作方法完成并且TabPage正确绘制之前,TabPage在一小段时间内看起来很奇怪/混乱。我明白这是发生的,因为我正在做的工作在同一线程,正在绘制TabPage。然而,我正在寻找一种简单的方法来防止这种"丑陋"的行为,而不需要在单独的线程中完成工作。在这种情况下使用一个单独的线程感觉有点过头了。我更愿意通过某种方式允许TabPage在执行worker方法之前完成绘制来解决这种情况。什么好主意吗?

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (tabControl1.SelectedTab == tabControl1.TabPages["myTabPage"])
    {                
        doWorkFor300ms();                
    }
}

做工作时,TabPage被选中,而不会导致油漆延迟/延迟

如果您希望在执行工作之前强制刷新,而不需要单独的线程…那么:

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (tabControl1.SelectedTab == tabControl1.TabPages["myTabPage"])
    {                
        this.Refresh();
        Application.DoEvents();
        doWorkFor300ms();                
    }
}