PDFを作成し、各PDFの名前を作成時にリッチテキストボックスに出力するC#WinFormsアプリケーションを作成しています。私はScrollToCaret機能を使用して、各行が作成されるたびにテキストボックスを自動的にスクロールします。追加の詳細として、printメソッドはWinFormとは別のクラスにあります。フォーカスを失ったときにScrollToCaretがnull参照例外をスローする
私はに実行している問題は、プログラムがフォーカスを失ったときに、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の生成中にフォーカスが失われても一貫してこの例外がスローされます。
プログラムの実行には1〜2分かかるため、バックグラウンドで実行する機能が重要です。
プログラムがフォーカスを失ったときにScrollToCaretがNull参照例外をスローするのを止める方法を教えてください。 WinForms RichTextBoxの他の機能を使用する必要がありますか?
EDIT: null参照例外は何ですか? winformが明確にインスタンス化され、機能しているときになぜスローされているのかわかりませんが、プログラムがフォーカスを失ったときに機能しなくなります。 winformがフォーカスを失ったときに、winformまたはその子コンポーネントがインスタンスを生成しないことを示すドキュメントは見つかりませんでした。
フォームがnullかどうかを確認する必要があります。 – LarsTech
@LarsTechフォームはnullではありません。そうでなければ、最初は印刷できません。フォーカスが失われたときにフォームがnullになる理由はわかりません。私はあなたのコメントを誤解していない限り。 –
as castの直後に以下のチェックを追加してください。あなたの問題を解決するはずです。 if(form == null)戻り値: – CharithJ