1

私はプロジェクトに取り組んでおり、2 つのフォームがあります。

名前が示すように、consoleWindow フォームのリスト ボックスにテキスト行を追加するメソッド ( writeToConsole(string textToWrite) ) を呼び出します。

私が抱えている問題は、このフォームを表示するために、show コマンドを呼び出すボタンを使用することです。ただし、右上隅の「x」ボタンでフォームを閉じてから、[コンソール ボタンの表示] をもう一度クリックすると、次のようになります。

ObjectDisposedException

 "Cannot access a disposed object.
Object name: 'consoleOutput'."

今、私は問題をある程度理解しています-私はそれを1、2か月前に持っていました.xを押すとフォームが閉じられるため、フォームを再初期化/再ロードしてから表示する必要があるためです.エラーは(非常に基本的な一言で言えば)「存在しないものを表示することはできません/途方に暮れています」です

(繰り返しになりますが、それは「一見それが意味するものですが、実際にはそれよりも深いものではありません」という全体的な見方です-私はそれよりも深いことを理解しています)

私の質問はこれです: 誰かが私に正確に何が起こっている/間違っているのか、そしてこの種のことを行うための最良の方法を説明してもらえますか?

私はエラーの概念を理解しており、それを修正する方法を 1 つまたは 2 つ知っていますが、プログラマーになりたいので、(少なくとも) この状況のイベントの流れを知りたいです。私の知識

ありがとう

安全のために:

consoleOutput consoleOutput = new consoleOutput();

        private void btnShowConsole_Click(object sender, EventArgs e)
        {
            //Check to see if the console is visible, of which if its not, make it so
            //If it is on the other hand, just bring it to the front to show the user
            if (consoleOutput.Visible == false)
                consoleOutput.Show();
            else
                consoleOutput.BringToFront();
        }
4

2 に答える 2

2

おそらく次のようなものが必要です。

private void ConsoleOutput_FormClosing(object sender, FormClosingEventArgs e)
{
   this.Hide();
   e.Cancel = true; // cancel the close event.
}

イベントを購読する必要があります...フォームを閉じたい場合は、忘れずに購読を解除してください。

于 2013-08-13T03:25:04.730 に答える