设置ToolStripProgressBar';时出现NullReferenceException;s值

本文关键字:NullReferenceException ToolStripProgressBar 设置 | 更新日期: 2023-09-27 18:26:44

使用ToolStripProgressBar时遇到以下问题(但使用ProgressBar时不会出现)。

我有一个默认的Form和一个StatusStrip,在StatusStrip上有一个名为toolStripProgressBar1ToolStripProgressBar。我有一个FormClosing事件处理程序。当我关闭表单时,以下代码在toolStripProgressBar1.Value = i;行抛出一个NullReferenceException

public partial class Form1 : Form
{
    Progress<int> testProgress;
    public Form1()
    {
        InitializeComponent();
        testProgress = new Progress<int>(i =>
        {
            toolStripProgressBar1.Value = i;
        });
    }
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        ((IProgress<int>)testProgress).Report(5);
    }
}

根据调试器的说法,在发生异常时,toolStripProgressBar1不是null,但由于我无法想象的原因,它的许多字段和属性都是null。有人能告诉我为什么会有这个例外吗?

设置ToolStripProgressBar';时出现NullReferenceException;s值

设置值时,tooltrip进度条的包装进度条控件(ToolStripProgressBar.ProgressBar属性)已被释放。这种情况不仅发生在处理FormClosing时调用操作时,而且发生在重写OnFormClosing时。