Bonjour a tous et toutes, ça fait plusieurs jours que je me retrouve confronter à un problème, il est tant de demander de l’aide.
Je suis en train de convertir un appli Windows Form en Wpf sous VB 2022
J’utilise un Tabcontrol
Je génère les onglets de ce tabcontrol dynamiquement.
Chaque onglets ayant une Textbox avec du texte.
Quand je clique sur un autre onglet je dois vérifier que mon texte est bien sauvegardé.
Si ce n’est pas le cas une msgbox apparait pour me prévenir de faire la sauvegarde
Si je clique sur oui -> je sauve et passe au nouvel onglet.
Sur non -> je ne sauve pas et je passe au nouvel onglet
Sur annuler -> je ne sauve pas mais je reste sur l’ancien onglet je ne passe pas sur le nouveau.

Alors en Windows Form ça marchais nickel :
Grace a la méthode Onglets_Deselecting
Ce que j’aimais bien aussi c’est que quand le msgbox s’affiche on voit toujours l’ancien onglet car cette méthode est appelée avant le changement d’onglet.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Onglets_Deselecting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TabControlCancelEventArgs) Handles Onglets.Deselecting
    If init = False Then
        If Sauve_bouton.Enabled = True Then
            Dim reponse As Integer = MsgBox("Sauvegarder vos modifications ?", MsgBoxStyle.YesNoCancel, "Sauvegarde")
            If reponse = vbYes Then
                ' ....... ici sauvegarde 
            ElseIf reponse = vbCancel Then
                e.Cancel = True
            End If
        End If
    End If
End Sub

Hors en WPF cette méthode n’existe pas et rien ne la remplace vraiment.

Il y a bien :
Private Sub onglets_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles onglets.SelectionChanged

Mais en fait cette méthode est appelée une fois que l’on a basculer sur le nouvel onglet.
J’ai tester avec les lostfocus des tabitems mais je ne peux pas annuler comme avec le E. Cancel
On me dis de mettre a la place e.Handled = True mais en fait ca ne change rien. ca ne reviens pas en arrière

En plus j’ai l’impression que le msgbox fait planter le comportement tu tabcontrol car il prend le focus.

Donc si quelqu’un a déjà eu ce souci sous wpf et a réussis a le solutionner je suis preneur.

j'ai bien sur chercher sur internet mais rien de bien concluant.

Merci d’avance pour vos réponses.

Cordialement

Rataton