[英]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.