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 :

Une condition ne s'applique pas. Pourquoi ? [Débutant]


Sujet :

VB.NET

  1. #1
    Membre confirmé Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 411
    Points : 465
    Points
    465
    Par défaut Une condition ne s'applique pas. Pourquoi ? [Débutant]
    Bonjour,

    Je vais essayer de faire court...

    Mon prog. agit sur le registre de windows xp. Il est constitué d'un TabControl contenant 3 TabPage (TabPage_Folders, TabPage_Services, TabPage_Config). TabPage_Folders n'a, ma connaissance, aucun lien avec les 2 autres TabPage. Au départ, TabPage_Services et TabPage_Config n'étaient pas prévu ds mon projet.
    Je n'ai pas encore assez de recul, mais le programme ne semble pas rapporter d'erreur, sauf que... Je vais y venir.

    En gros, le prog. fonctionne ainsi : dans chaque TabPage (sauf TabPage_Folders), l'utilisateur coche (CheckBox) ou choisi parmis une liste (ComboBox en DropDownList) la modification qu'il veut faire sur le registre. A tout moment, il peut, soit appliquer les modifs, soit les annuler via les boutons correpondants.
    Voilà, le décor est posé

    Maintenant, le problème...
    Le bouton pour annuler Button_Cancel_Click fonctionne en fait, mais pas comme je le souhaite. Cet enfoiré (excusez moi de l'expression) annule les modifications de l'utilisateur ds les 2 TabPage sur lesquels il doit agir, mais j'aimerais que l'action se fasse UNIQUEMENT sur le TabPage qui a le Focus.

    Je souhaite attribuer le même type de fonctionnement pour le bouton "Appliquer".

    Certains me diront que je n'ai qu'à créer 2 boutons pour annuler et idem pour appliquer. Chacun agirait sur le TabPage de mon choix, mais apres test, ça ne change rien, malheuresement.

    Il sagit peut-etre d'un problème d'evénement, mais jusqu'a present, je ne me suis jamais amusé à les gérer. Du coup les "ByVal", "e" et compagnie, je ne sais pas les utiliser.

    Donc, si une âme charitable passe ds le coin, merci à elle de me donner un coup de pouce.

    Ci-dessous, un bout de code où doit se trouver l'erreur.

    MERCI !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    Imports System.Windows.Forms
    Imports System.IO
    Imports Microsoft.Win32
    Imports Microsoft.Win32.RegistryValueKind
     
     
    Public Class Form
     
        Dim temp As String = Environment.GetEnvironmentVariable("TEMP")
        Dim system32 As String = Environment.GetEnvironmentVariable("WINDIR") & ("\system32")
     
        Dim username As String = Environment.GetEnvironmentVariable("USERNAME")
     
        Dim new_documents As String
        Dim new_bureau As String
        Dim new_favorisIE As String
     
            ' TabPage_Services
        Dim Key_1 As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Services\RemoteRegistry", True)
            ' et les autres clés...
     
            ' TabPage_Config
        Dim Key_config_1 As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", True)
            ' et les autres clés...
     
     
    Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            GroupBox_Information.Visible = False
            Button_OK.Visible = False
            Button_Cancel.Visible = False
        End Sub
     
     
    Private Sub TabControl_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl.Enter '(marche bien avec "Enter"), Button_Annul.Click
     
            TabPage_Services_GetRegInfos(sender, e)
            TabPage_Config_GetRegInfos(sender, e)
        End Sub
     
     
        Private Sub TabPage_Folders_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage_Folders.Enter
     
            GroupBox_Information.Visible = False
            Button_OK.Visible = False
            Button_Cancel.Visible = False
        End Sub
     
     
        Private Sub TabPage_Services_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage_Services.Enter
     
            GroupBox_Information.Visible = True
            Button_OK.Visible = True
            Button_Cancel.Visible = True
        End Sub
     
     
        Private Sub TabPage_Config_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage_Config.Enter
     
            GroupBox_Information.Visible = True
            Button_OK.Visible = True
            Button_Cancel.Visible = True
        End Sub
     
     
        Private Sub TabPage_Services_GetRegInfos(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Handles TabPage_Services.Enter
     
            ' Les variables "Key_x" sont déclarées "Public Class Form"
     
            Dim Val_1 = 0
            If Not Key_1 Is Nothing Then
                Val_1 = CType(Key_1.GetValue("Start"), String)
            End If
            If Val_1 = 0 Then Label1.Enabled = False
            If Val_1 = 0 Then ComboBox1.Enabled = False
            If Val_1 = 2 Then ComboBox1.Text = "Automatique"
            If Val_1 = 3 Then ComboBox1.Text = "Manuel"
            If Val_1 = 4 Then ComboBox1.Text = "Désactivé"
     
            Dim Val_2 = 0
            If Not Key_2 Is Nothing Then
                Val_2 = CType(Key_2.GetValue("Start"), String)
            End If
            If Val_2 = 0 Then Label2.Enabled = False
            If Val_2 = 0 Then ComboBox2.Enabled = False
            If Val_2 = 2 Then ComboBox2.Text = "Automatique"
            If Val_2 = 3 Then ComboBox2.Text = "Manuel"
            If Val_2 = 4 Then ComboBox2.Text = "Désactivé"
     
            Dim Val_3 = 0
            ' et ainsi de suite...
      End Sub
     
     
     Private Sub TabPage_Config_GetRegInfos(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Handles TabPage_Config.Enter
     
            ' Les variables "Key_config_x" sont déclarées "Public Class Form"
     
            ' Afficher les Info-Bulles (Balloon Tips)
            If Not Key_config_1 Is Nothing Then
                Dim Val_config_1 = CType(Key_config_1.GetValue("EnableBalloonTips"), String)
                If Val_config_1 = 1 Then CheckBox1_YES.Checked = True
                If Val_config_1 = 1 Then CheckBox1_NO.Checked = False
                If Val_config_1 = 0 Then CheckBox1_NO.Checked = True
                If Val_config_1 = 0 Then CheckBox1_YES.Checked = False
            End If
            If Key_config_1 Is Nothing Then
                CheckBox1_YES.Checked = True
                CheckBox1_NO.Checked = False
            End If
     
            ' et ainsi de suite...
        End Sub
     
     
        Private Sub Button_Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Cancel.Click
            'Me.DialogResult = System.Windows.Forms.DialogResult.OK
     
            'Dim services = TabPage_Services.Focus = True
            'Dim config = TabPage_Config.Focus = True
            'MsgBox("TabPage_Services : " & services)
            'MsgBox("TabPage_Config : " & config)
     
            If TabPage_Services.Focus = True Then
            TabPage_Services_GetRegInfos(sender, e)
            End If
     
            If TabPage_Config.Focus = True Then
            TabPage_Config_GetRegInfos(sender, e)
            End If
     
            'TabPage_Services_GetRegInfos(sender, e)
            'TabPage_Config_GetRegInfos(sender, e)
        End Sub
    End Class
    PS : Button_Cancel_Click est à la fin du code ci-dessus.

    Que je mette une condition ou non, il se produit le même résultat. Pire encore, si je supprime le "bloc", ci-dessous, du bouton Button_Cancel_Click, le TabPage_Config est qd m mis à jour ?!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            If TabPage_Config.Focus = True Then
            TabPage_Config_GetRegInfos(sender, e)
            End If

  2. #2
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Regarde dans le designer la form et à mon avis, tu as dans la propriété cancelbutton de ta form ton Button_Cancel.
    Dans le .designer de la form, il y a dans ce cas :
    Me.CancelButton = Me.Button_Cancel

    Si c'est ça, suffit de le virer.

    Sinon, il y a caché quelque part (dans le .designer ou autre ) un handle sur ce bouton.
    Cherche Button_Cancel.Click dans toute la solution pour voir.

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  3. #3
    Membre confirmé Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 411
    Points : 465
    Points
    465
    Par défaut
    Avant même de regarder, il peut-etre bon que je précise, qu'au départ, ce bouton ne se nommé pas Cancel_Button. Je ne me souviens plus du nom que je lui avait donné mais enfin bref. Si jamais ça peut aider...

    Merci, je vais voir de ce côté.

  4. #4
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Re.

    Ca n'a pas d'importance que tu ais changé de nom ou pas car de toute façon, si c'est via le designer, VS à géré le changement dans tout le code.

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  5. #5
    Membre confirmé Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 411
    Points : 465
    Points
    465
    Par défaut
    Alors...

    Dans "CancelButton", il n'y a rien (aucun)

    Par contre un peu plus haut, ds "AutoValidate" (EnablePreventFocusChange) est sélectionné. Est-ce qu'il pourait y avoir un lien ?

    Autre chose, Button_Cancel n'est pas positionné ds le TabControl mais ds la Form.

  6. #6
    Membre confirmé Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 411
    Points : 465
    Points
    465
    Par défaut
    oui, effectivement. C bien bien pratique d'ailleur !

  7. #7
    Membre confirmé Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 411
    Points : 465
    Points
    465
    Par défaut
    J'ai trouver ! cool !!!!!!!!!
    J'y ai passé 2 jours mais bon... pas pour rien.

    J'ai déplacé les lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TabPage_Services_GetRegInfos(sender, e)
    TabPage_Config_GetRegInfos(sender, e)
    qui étaient ds une procédure creé rien que pour elle (TabControl_Enter) que j'ai supprimé du coup, et les ai collées ds mon Form_load.

    Et finalement, je n'ai pas changé le code de Button_Cancel_Click.

    Comme quoi, suffisait de prendre le problème à l'envers
    Merci qd m pour ton aide olsimare.



    PS: je ne tag pas [Résolu] pour le moment, car j'aimerais bien que l'on m'explique pour quelle raison le prog agit ainsi ?

    Je comprends que le TabControl est le "parent" des TabPage, mais bon... J'ai lu aussi que ds l'ordre des priorités, (Enter) passe avant (Focus), mais [B]Button_Cancel[B] n'appellait pas TabControl_Enter, mais directement les 2 TabPage..._GetRegInfos qui, elles, n'ont pas d'Handles.

    Bref, je nage ds le flou...

  8. #8
    Membre confirmé Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 411
    Points : 465
    Points
    465
    Par défaut
    dommage...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/09/2006, 10h31
  2. Débutant : Définir une condition dans une zone de texte
    Par OlivierC69 dans le forum Access
    Réponses: 5
    Dernier message: 11/08/2006, 23h02
  3. Réponses: 5
    Dernier message: 04/07/2006, 10h55
  4. Réponses: 2
    Dernier message: 09/06/2006, 14h38
  5. [Etat] appliquer une condition sur une somme
    Par Oluha dans le forum IHM
    Réponses: 5
    Dernier message: 13/02/2006, 13h34

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