web-dev-qa-db-fra.com

Comment saisir l'événement du bouton de fermeture de la fenêtre (bouton X rouge sur le coin supérieur droit de la fenêtre) sous la forme wpf?

Comment saisir l'événement du bouton de fermeture de la fenêtre (bouton X rouge sur le coin supérieur droit de la fenêtre) sous la forme wpf? Nous avons également l’événement de clôture, l’événement window non chargé, mais nous souhaitons afficher une fenêtre contextuelle s’il clique sur le bouton de fermeture du formulaire wpf.

Aide aimablement.

22
HotTester

Utilisez l'événement Closing dans la fenêtre, vous pouvez le gérer comme ceci pour éviter sa fermeture:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    e.Cancel = true;
}
31
Natxo

si vous appuyez sur le bouton de confirmation dans form2, effectuez l'action, si vous appuyez sur le bouton X, ne faites rien

public class Form2
{
  public bool confirm { get; set; }

    public Form2()
        {
            confirm = false;
            InitializeComponent(); 
        }

   private void Confirm_Button_Click(object sender, RoutedEventArgs e)
    {
       //your code
       confirm = true;
       this.Close();

    }

}

première forme:

public void Form2_Closing(object sender, CancelEventArgs e)
        {
            if(Form2.confirm == false) return;

            //your code 
        }
3
Vojtana

at form1.Designer.cs put sous le code pour assigner l'événement

this.Closing += Window_Closing;

à form1.cs met la fonction de fermeture

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    //change the event to avoid close form
    e.Cancel = true;
}
0
Jemt tinhwa

SOLUTION:

Avoir un drapeaupour identifier si la méthode Close () est appelée à partir d'un bouton autre que l'icône X. (par exemple: IsNonCloseButtonClicked;)

Avoir une instruction conditionnelle à l'intérieur de la méthode Closing ()/ qui vérifie si IsNonCloseButtonClicked est false.

Si la valeur est false, l'application tente de se fermer par le biais d'un bouton autre que l'icône X. Si la valeur est true, cela signifie que le bouton icône X est cliqué pour fermer cette application.

[Exemple de code]

private void buttonCloseTheApp_Click (object sender, RoutedEventArgs e) {
  IsNonCloseButtonClicked = true;
  this.Close (); // this will trigger the Closing () event method
}


private void MainWindow_Closing (object sender, System.ComponentModel.CancelEventArgs e) {
  if (IsNonCloseButtonClicked) {
    e.Cancel = !IsValidated ();

    // Non X button clicked - statements
    if (e.Cancel) {
      IsNonCloseButtonClicked = false; // reset the flag
      return;
    }
  } else {

    // X button clicked - statements
  }
}
0
Naveen Kumar V

En VB.NET:

    Private Sub frmMain_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    ' finalize the class

    End Sub

Pour désactiver le bouton Form X:

'=====================================================
' Disable the X button on the control bar
'=====================================================
Private Const CP_NOCLOSE_BUTTON As Integer = &H200
Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams
    Get
        Dim myCp As CreateParams = MyBase.CreateParams
        myCp.ClassStyle = myCp.ClassStyle Or CP_NOCLOSE_BUTTON
        Return myCp
    End Get
End Property
0
JA12