2 回答

TA貢獻1883條經驗 獲得超3個贊
您可以使用FormClosingEventArgs.CloseReason 屬性來確定是否顯示 MessageBox。
設置DialogResult
模態表單的屬性是我知道的唯一一次將CloseReason
是CloseReason.None。調用Form.Close
或單擊“X”按鈕將顯示一個CloseReason
of?CloseReason.UserClosing
。
我建議您只在這種情況下顯示消息CloseReason.UserClosing
。這符合您聲明的意圖,并且還可以防止顯示其他可能的 CloseReason 消息。
if (e.CloseReason == CloseReason.UserClosing)
{
? ? DialogResult result = MessageBox.Show("Sure?", "Close", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
? ? if (result.Equals(DialogResult.OK))
? ? {
? ? ? ? Environment.Exit(0);
? ? }
? ? else
? ? {
? ? ? ? e.Cancel = true;
? ? }
}

TA貢獻2011條經驗 獲得超2個贊
最簡單的方法是this.Hide();在第二種形式中使用來隱藏它:
private void ButtonReturn_Click(object sender, EventArgs e)
{
this.Hide();
}
但是,每次單擊第一個 Form 中的 Button2_Click 事件時,都會啟動一個新的 Form2。如果您希望第二個表單保持不變/保留文本框中的值等,您應該在按鈕單擊事件之外定義表單,并僅在尚未使用時實例化它。像這樣的東西:
Form2 form2;
private void Button2_Click(object sender, EventArgs e)
{
if(form2 == null) { form2 = new Form2();}
this.Hide();
form2.ShowDialog();
this.Show();
}
編輯: 為了防止觸發關閉事件,您可以定義一個布爾值來檢查是否按下了返回按鈕。然后每次使用 Form_Activated 再次打開表單時重置該值:
bool showClosingEventMessage = true;
private void button1_Click(object sender, EventArgs e)
{
showClosingEventMessage = false;
this.Hide();
}
private void Form2_Activated(object sender, EventArgs e)
{
showClosingEventMessage = true;
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if (showClosingEventMessage)
{
DialogResult result = MessageBox.Show("Sure?", "Close", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (result.Equals(DialogResult.OK))
{
Environment.Exit(0);
}
else
{
e.Cancel = true;
}
}
}
- 2 回答
- 0 關注
- 193 瀏覽
添加回答
舉報