C# Windows Forms のダイアログウィンドウをソースコードで閉じる方法
Q&A
Closed
解決したいこと
どうすればシステム側(ソースコード)でダイアログを閉じることができますか?
例)
今、本の情報を MySQL から検索する機能を作っています。構成は、メニューウィンドウと、検索ウィンドウの二つでできています。そして、メニューウィンドウから検索ウィンドウ(ダイアログウィンドウ)に移動する感じです。
やってみたこと
1.this.DialogResult = DialogResult.Cancel
の記述
これを記述しても閉じませんでした。
2.this.Depose()
の記述
これだとメモリがどんどん減っていきました。
3.this.Close()
の記述
2と同じです。
4.using(){}
の記述
2、3で閉じているため、System.ObjectDisposedException
が出ます。
今はどうしてるか
いまはこうしています。
MenuForm.cs
try
{
using(BooksQueryForm BooksQueryForm = new BooksQueryForm()
{
BooksQueryForm.ShowDialog();
} // ここで ObjectDisposeException が発生
}
catch(ObjectDisposedException ms)
{
Console.WriteLine(ms.Message);
// Cannot access a disposed object.
// Object name: 'BooksQueryForm'.
}
BooksQueryForm.cs
MySqlConnectionStringBuilder conBuider = new MySqlConnectionStringBuilder
{
UserID = "book_manager",
Server = "localhost",
Database = "book_manager",
Password = "IlikeBoos" // わざと間違ったパスワードにする
};
this.connector = new MySqlConnection(conBuider.ConnectionString);
try
{
this.connector.Open(); // 失敗する
this.connector.Close();
}
catch (MySqlException ms)
{
Console.WriteLine(ms.Message);
MessageBox.Show("Error\nFaild to connect MySQL.\nThis program will stop.");
//this.DialogResult = DialogResult.Cancel; // これは閉じない
//this.Dispose(); // これは ObjectDisposeException が発生する
this.Close(); // 上と同じ
return false;
}
return true;
全然解決できないです。知っていたら教えてください。お願いします。
0