我正在創建一個C#WinForms應用程序,該應用程序會創建PDF並將每個PDF的名稱輸出到富文本框中。我使用ScrollToCaret功能在創建每行時自動滾動文本框。作爲附加的細節,打印方法與WinForm分開。ScrollToCaret在焦點丟失時拋出空引用異常
我遇到的問題是,當程序失去焦點,ScrollToCaret函數拋出一個NullReferenceException
這是每次引發錯誤的代碼段:
private void Print<T>(T str)
{
var form = Form.ActiveForm as PDFGenerator.Form1;
try
{
form.richTextBox1.AppendText(str + Environment.NewLine);
}
catch
{
form.richTextBox1.AppendText("Couldn't print string");
}
form.richTextBox1.ScrollToCaret();
}
與附加文本
型 'System.NullReferenceException' 未處理的異常發生在PDFGenerator.exe
附加信息:未將對象引用設置爲對象的實例。
如果程序沒有失去焦點,程序不會遇到任何問題,但如果程序在生成PDF時失去焦點,則會一直拋出此異常。
該程序需要一兩分鐘的時間才能運行,所以在後臺運行它的能力非常重要。
當程序失去焦點時,如何停止ScrollToCaret拋出一個Null引用異常?我必須使用WinForms RichTextBox的其他功能嗎?
編輯:我明白什麼是空引用異常;我不明白爲什麼當winform被明確實例化並且運行時拋出它,但是當程序失去焦點時停止運行。我還沒有發現有任何文檔說Winform或其子組件在Winform失去焦點時無法實際展現。
也許你應該檢查看看錶單是否爲空。 – LarsTech
@LarsTech表單不爲空 - 否則它不能打印,我不明白爲什麼表單在失去焦點時會變爲null。除非我誤解你的評論。 –
在演員陣容剛剛添加之後添加以下檢查。它應該解決你的問題。 if(form == null)return; – CharithJ