c# - 调用选择文件对话框时出现 NullReferenceException 错误

标签 c# .net winforms

这是一个真正的新手问题。我有一个简单的应用程序,它可以选择一张图片并在 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/

相关文章:

c# - 如何在 C# 中读取( native )DLL 的导出函数名称?

c# - WinForms WebBrowser - FireBug 检查类似元素的突出显示

c# - 删除 DataGridView 中两个单元格之间的行分隔符

c# - DateTime代表C#中的多少位

c# - 异步方法异常的不同行为

c# - 设置窗口位置在中心

c# - 同时突出显示 2 个文本框中的文本

c# - 将列添加到绑定(bind)到 DataGridView 的 DataTable 不会更新 View

c# - 使用 CTRL+F5 立即关闭控制台

c# - 访问项目模板中的文本框