IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème Changement Onglets TabControl en WPF


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 19
    Par défaut Problème Changement Onglets TabControl en WPF
    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

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2023
    Messages : 4
    Par défaut
    Bonjour,

    En effet le TabControl en WPF n'a pas d'évènement natif pour gérer le "selection changing".

    Ton approche avec le SelectionChanged est la bonne.

    Le e.Handled = True sert juste à dire que l'évènement est géré.

    Il te suffit de rajouter MyTab.SelectedItem = e.RemovedItems(0), pour forcer le retour à l'onglet d'origine.

    Attention tout de même à rajouter un booléen pour désactiver l'appel de l'évènement SelectionChanged quand tu fais cette affectation pour éviter une boucle infini d'appels à onglets_SelectionChanged.

    Cordialement,

    ThetaSigma

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 19
    Par défaut
    merci ThetaSigma pour ta réponse

    je vais tester ca !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème changement de page wpf
    Par soonsoon dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 04/01/2019, 15h52
  2. TabControl - interdir changement onglet
    Par TheBlackReverand dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/02/2008, 12h04
  3. Réponses: 6
    Dernier message: 22/06/2007, 15h51
  4. [NON RESOLU] Problème changement maitre détail - Requête SQL
    Par Leesox dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/08/2005, 09h49
  5. [ONGLET]Problème d'onglet
    Par jaymz dans le forum IHM
    Réponses: 3
    Dernier message: 18/04/2005, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo