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
Partager