#c# #wpf
#c# #wpf
Вопрос:
я хочу иметь пользовательское окно закрытия. Мой сценарий таков: исходная функция кнопки X предназначена для сворачивания окна, в то время как пользователь фактически закроет его. Мой X по умолчанию такой, как показано ниже:
// add handler by double clicking on Closing event in Properties Box
// My below X button
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
this.Hide();
}
Однако, когда я пытаюсь создать пользовательскую кнопку закрытия следующим образом:
void closeButton_Click(object sender, RoutedEventArgs e)
{
Close();
}
Он просто свернется, как по умолчанию. Итак, как мне это сделать? Спасибо за чтение.
Комментарии:
1. Я думаю, что это плохая идея. Придание кнопке закрытия другого значения.
Ответ №1:
private bool _forceClose;
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if(!_forceClose)
{
e.Cancel = true;
this.Hide();
}
}
void closeButton_Click(object sender, RoutedEventArgs e)
{
_forceClose = true;
Close();
}
Ответ №2:
Вы можете удалить событие закрытия нажатием кнопки
public MainWindow()
{
InitializeComponent();
this.Closing = MainWindow_Closing;
}
void MainWindow_Closing(object sender, CancelEventArgs e)
{
e.Cancel = true;
this.Hide();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Closing -= MainWindow_Closing;
this.Close();
}