Как создать кнопку закрытия, в то время как исходная кнопка закрытия должна быть сведена к минимуму?

#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();

    }