簡體   English   中英

調用“選擇文件”對話框時出現NullReferenceException錯誤

[英]Getting a NullReferenceException Error when invoking a Select File Dialog Box

這是一個真正的新手問題。 我有一個簡單的應用程序,可以選擇圖片並在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()

顯示模式對話框時,您的表單不再處於活動狀態。 因此, ActiveForm是模式對話框,而不是Form (它是本機窗口),因此ActiveForm返回null。

為什么不引用窗體本身而不是ActiveForm

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM