みんな。私はそのような問題に遭遇しました。私のアプリでは、ShowDialog メソッドを使用して、メイン フォームから 2 番目のフォームを表示します。このフォームには、DB に接続するためのテキスト ボックスと [接続] ボタンがあります。ユーザーが X をクリックすると、アプリは終了します。しかし、ユーザーが「接続」をクリックすると、DB に接続し、2 番目のフォームも閉じます。終了イベントをキャッチするには、FormClosing メソッドを使用します。ここで、アプリを閉じようとしているかどうかをアプリが尋ね、そうであれば終了します。問題は、ボタンをクリックすると FormClosing イベントが発生し、終了するかどうか尋ねられることです。それを避ける方法は?送信者を使用しようとしていますが、機能しません。
これが私のコードです:
private void Connect_Click(object sender, EventArgs e)
{
try
{
orcl.connect(userID.Text, Password.Text, comboTNS.Text);
if (orcl.ifHasRows("select dbclass from setupdbversion where dbclass='SECURITY' and rownum=1"))
{//my stuff
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
};
}
private void SecConnForm_FormClosing_1(object sender, FormClosingEventArgs e)
{
MessageBox.Show(sender.ToString());
if (e.CloseReason == CloseReason.UserClosing)
{
MessageBox.Show(sender.ToString());
if (string.Equals((sender as Form).Name, @"SecConnForm")) //it doesn't work as in any cases the sender is my form, not a button (when i click on button of course)
{
if (MessageBox.Show(this, "Really exit?", "Closing...",
MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
== DialogResult.Cancel)
e.Cancel = true;
else
Application.Exit();
}
else
{
//other stuff goes..
}
}
}