这是一个真正的新手问题。我有一个简单的应用程序,可以选择图片并在PictureBox中显示该图片。

我决定弄乱“不透明度”属性,因此添加了一个计时器并创建了这种炫酷效果,其中“主窗体”的“不透明度”每400毫秒增加20%。

现在的问题是,当我单击调用“选择文件”对话框的按钮时,出现NullReferenceException错误。

 private void tmrClock_Tick(object sender, EventArgs e)
    {
        if (ViewerForm.ActiveForm.Opacity != 1)
        {
        ActiveForm.Opacity = ActiveForm.Opacity + .20;
        }
    }


错误消息指向if语句。

我究竟做错了什么?

谢谢

最佳答案

ActiveForm属性返回当前焦点的Form对象。

当您打开文件对话框时,没有焦点的窗体不是托管的Form对象,因此ActiveForm返回null

假设您的计时器在表单中,则只需编写this.Opacitythis关键字引用计时器所在的Form对象。

顺便说一句,您应该在动画结束时停止计时器(通过调用tmrClock.Stop()

关于c# - 调用“选择文件”对话框时出现NullReferenceException错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2404679/

10-09 16:32