2017-01-29 9 views
0

テキストがrichTextbox1に追加されていて、フォームの右上隅にある赤色のxをクリックすると、プログラムが終了します。私はどのように処理する必要がありますプログラムを閉じるときに廃棄オブジェクトの例外にアクセスできません?

だから私はこれをフォームを閉じるイベントで処理する必要があると思います。

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
     { 

     } 

私は、リッチテキストボックス(rtbPaths)

RichTextBoxExtensions.AppendText(rtbPaths, "Downloading: ", Color.Red); 
RichTextBoxExtensions.AppendText(rtbPaths, downloader.CurrentFile.Path, Color.Green); 
rtbPaths.AppendText(Environment.NewLine); 

これを更新しています場所ですがRichTextBoxExtensionsクラスに

public class RichTextBoxExtensions 
     { 
      public static void AppendText(RichTextBox box, string text, Color color) 
      { 
       box.SelectionStart = box.TextLength; 
       box.SelectionLength = 0; 

       box.SelectionColor = color; 
       box.AppendText(text); 
       box.SelectionColor = box.ForeColor; 
      } 
      public static void UpdateText(RichTextBox box, string find, string replace, Color? color) 
      { 
       box.SelectionStart = box.Find(find, RichTextBoxFinds.Reverse); 
       box.SelectionLength = find.Length; 
       box.SelectionColor = color ?? box.SelectionColor; 
       box.SelectedText = replace; 
      } 
     } 

TextChangedイベント

private void rtbPaths_TextChanged(object sender, EventArgs e) 
     { 
      // set the current caret position to the end 
      rtbPaths.SelectionStart = rtbPaths.Text.Length; 
      // scroll it automatically 
      rtbPaths.ScrollToCaret(); 
     } 

例外メッセージです

メッセージ=配置されたオブジェクトにアクセスできません。 オブジェクト名: 'RichTextBox'。 のObjectName =リッチテキストボックス ソース=のSystem.Windows.Forms のStackTrace: System.Windows.Forms.Control.CreateHandle() でSystem.Windows.Forms.TextBoxBase.CreateHandle(AT) System.Windows.Forms.Controlで.get_Handle() at System.Windows.Forms.RichTextBox.get_TextLength()DownloaderPro.Form1.RichTextBoxExtensions.AppendText(RichTextBoxボックス、文字列テキスト、色の色)Form1.cs:Line 249 DownloaderPro.Form1.downloader_FileDownloadStarted (Object sender、EventArgs e)Form1.cs:line 186

+0

を動作しなかった場合、私に教えてください処分

e.Cancel = true; 

を防ぐことができます - 私が意味する、あなたのコードが適切に構築されていませんどこかに。第二に、関連するコードを表示していませんでした。表示するコードは、テキストボックスにとって重要なことはしません。第3に、もしあなたがアプリケーションを閉じてしまうと、予期しないエラーを処理するためにアプリエントリに配線されるべき 'application.threadexception'イベントで処理できるエラーを無視することができます。 –

+0

これは最も一般的なスレッドのバグです。大きなファイルをダウンロードすることは、スレッドで行うことです。ユーザーがウィンドウを閉じる前に、ダウンロードが停止または終了されていることを確認する必要があります。これを行うために他の人のライブラリを使用しても、このコードを正しく取得するのにはあまり役に立ちません。または私たちがあなたを助けるために。 –

答えて

0

こんにちはclosingイベントにGコード、それはあなたがこれに対処する必要はありません、それは理想的

関連する問題