这是一个真正的新手问题。我有一个简单的应用程序,它可以选择一张图片并在 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.Opacity
。 this
关键字引用计时器所在的 Form
对象。
顺便说一句,您应该在动画结束时停止计时器(通过调用 tmrClock.Stop()
)
关于c# - 调用选择文件对话框时出现 NullReferenceException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2404679/