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

Windows Forms Discussion :

[checkbox] Problème au "load"


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Par défaut [checkbox] Problème au "load"
    Bonjour à tous,

    Comme je n'ai rien trouvé à propos de mon problème, je me dit que la solution doit être tellement évidente que c'est peut-être honteux de demander ça.

    Tant pis, je me lance:
    Je voudrais que par défaut ma checkbox soit cochée et afficher à chaque modification d'état un messagebox du genre "wouahou c super fun tu as modifié l'état de la checkbox, méga cool!!"
    Le problème c'est que ce message très sérieux s'affiche avant l'ouverture de l'appli.
    Du coup, la seule solution que j'ai trouvé c'est de mettre l'état par défaut sur "Unchecked", est de le mettre en "checked" dans l'évènement form_load.

    Mais comme j'ai une pitite centaine de ces controles à gérer, je me disais qu'il y avait pitètre une solution plus "simple".

    Me trompes-je?

  2. #2
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par jontleman
    Bonjour à tous,

    Comme je n'ai rien trouvé à propos de mon problème, je me dit que la solution doit être tellement évidente que c'est peut-être honteux de demander ça.

    Tant pis, je me lance:
    Je voudrais que par défaut ma checkbox soit cochée et afficher à chaque modification d'état un messagebox du genre "wouahou c super fun tu as modifié l'état de la checkbox, méga cool!!"
    Le problème c'est que ce message très sérieux s'affiche avant l'ouverture de l'appli.
    Du coup, la seule solution que j'ai trouvé c'est de mettre l'état par défaut sur "Unchecked", est de le mettre en "checked" dans l'évènement form_load.

    Mais comme j'ai une pitite centaine de ces controles à gérer, je me disais qu'il y avait pitètre une solution plus "simple".

    Me trompes-je?
    C'est normal que ca s'affiche à l'ouverture de l'application car l'evenement checkchanged se déclanche...

    Pour ton probleme on fait une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'dans le form_load :
    For each Ctr as Control in me.controls
       If TypeOf Ctr is CHeckBox then 'dans le cas ou c'est une checkbox
          Dim Check_Box as Checkbox = Ctype(Ctr, CHeckBox)
          Check_Box.Checked = True 'coche la case
       End If
    Next
    Et voila !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    quand tu executes ton code, en fait au demarrage il y a plein de code qui est executé, pour les controles qu'il y a sur la feuille
    ce code se trouve dans le fichier .designer
    si tu as posé une checkbox en mode design ca donnera

    friend chekcbox1 as checkbox


    chekcbox1 = new checkbox
    checkbox1.name = "checkbox1"
    checkbox1.left = ...
    checkbox1.top = ...
    plein d'autre parametres, par exemple si ta case est cochée ou non

    puis form1.controls.add (checkbox1)

    donc en effet ton check change alors que ta feuille n'est toujours pas visible

    une des solutions pour éviter d'avoir ton message c'est de faire dans le code checkchange:
    if checkbox1.parent is nothing then exit sub
    ou alors
    if me.visible ) false then exit sub

    etc...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Par défaut
    merci beaucoup!

    Les 2 solutions d'Aspic et Sperot51 marchent.
    Pour le moment, je pense que je vais choisir la boucle, ça m'évitera de taper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Me.Visible = False Then Exit Sub
    pour toutes mes checkbox
    J'ai le même problème avec l'évènement label_move et là par contre je vais devoir utiliser ta methode Sperot51.

    En attendant de tester ta solution SaumonAgile, parce que ça pourra résoudre les 2 cas d'un coup!...

    Est-ce que ça revient au même de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Check_Box.CheckState = CheckState.Checked
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Check_Box.Checked = True
    ??

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    oui et non
    checkstate est un integer
    unchecked = 0 et checked = 1 (et indeterminate = 2)
    true va donc etre traduit a la volée en entier qui fera donc -1 et là le checkbox va surement se dire que tu voulais dire qu'il était coché

    donc il faut mieux utiliser le truc qu'est prévu pour
    de plus il est en général mieux d'avoir option strict ON qui onterdit de faire n'importe quoi

    (voir dans les options / options générales de vb)

    sinon si tu as plusieurs checkbox, il est peut etre possible d'avoir une seule sub qui gère toutes les checkbox et donc d'éviter de recopier if machin then exit sub, enfin ca depend de ce que tu fais avec biensur ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Cette solution manque tellement d'élégance, tu as raté tout le côté magnifique de n'écouter les événéments qu'une fois la fenêtre initialisée.

    Ce que je fais pour ce genre de problème, c'est que je n'affecte pas les événéments dans le designer. J'appelle une méthode après l'initialisation de la fenêtre qui va enregistrer tous les gestionnaires d'événéments.
    Par exemple
    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
    Private Sub FormLoad()
        ' Initialisation
        MonCheckBox.Checked = True
     
        AddEventListeners()
    End Sub
     
    Private Sub AddEventListeners()
        ' Convertir en VB.NET
        MonCheckBox.CheckChanged += monEventHandler
    End Sub
     
    Private Sub RemoveEventListeners()
        ' Convertir en VB.NET
        MonCheckBox.CheckChanged -= monEventHandler
    End Sub
    Je trouve ça tellement plus joli, mais c'est une question de goût finalement...

    Aspic : si tu voulais faire une traduction VB.NET complète pour notre ami, je t'en serais éternellement reconnaissant
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par SaumonAgile
    Aspic : si tu voulais faire une traduction VB.NET complète pour notre ami, je t'en serais éternellement reconnaissant
    Avec plaisir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'version vb.net
        Private Sub AddEventListeners()
            AddHandler MonCheckBox.CheckChanged, AddressOf monEventHandler
        End Sub
        Private Sub monEventHandler(ByVal Sender As Object, ByVal e As System.EventArgs)
       'code de ton event ici
        End Sub
    Sinon comem la dit Sperot51, utilise les options pour coder proprement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     'code à placer en haut de tes feuilles
    Option Strict On
    Option Explicit On
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Par défaut
    oulala, le Option Strict On me fait apparaitre plus d'une centaine d'erreurs!!! jvai avoir du travail...

    Encore une fois, merci pour votre aide

  9. #9
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par jontleman
    oulala, le Option Strict On me fait apparaitre plus d'une centaine d'erreurs!!! jvai avoir du travail...

    Encore une fois, merci pour votre aide
    Et bah dit dons.... Oui il va y avoir du boulot
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

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

Discussions similaires

  1. [Wamp] Problème d'insertion avec quote d'un formulaire
    Par cyberdevelopment dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/08/2006, 18h55
  2. [SQL-Server] Problèmes de guillemets et quotes dans un INSERT
    Par gregb34 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/05/2006, 09h40

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