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 très lente une fois bindée à un settings


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Points : 166
    Points
    166
    Par défaut Checkbox très lente une fois bindée à un settings
    Bonjour,

    J'ai problème de binding qui ralentit (considérablement) mon application. Le scenario le plus simple pour reproduire:

    - creer une form avec un tabpage control
    - sur la premiere page ajouter une checkbox avec la propriété 'Checked' bindé à un settings booléen
    - sur la 2em page ajouter un NumericUpDown (NUD) avec la propriété 'Value' bindé à un settings decimal avec une valeur par defaut supérieure a 0 (disons 5).
    - changer la propriété 'Minimum' du NUD pour etre supérieure a 0 (disons 1)
    Pendant le runtime la checkbox est très lente a changer d'état entre 'checked' et 'unchecked' après un clic.

    Si je configure visual studio pour lancer les exceptions du CLR (Ctrl + Alt + E, Throw CLR Exceptions) il detecte une erreur en lien avec le NUD: "La valeur '0' n'est pas valide pour 'Value'. 'Value' doit être compris entre 'Minimum' et 'Maximum'."

    Si j'active la page 2 du tabpage control avant de revenir sur la page 1 et de cliquer la checkbox l'erreur ne se produit plus.

    j'utilise VS 2012 Utimate et le framework 4.5

    Des suggestions sur l'origine voire la solution au problème?

    Merci
    Z

  2. #2
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Tu le dit toi même il y a des exception, cela ralentit énormément l’exécution, surtout si tu la laisse se propager a travers ton application.
    Sans avoir testé ou être certain que cela soit bien le cas, tu devrait placer un converter int-> bool lors du binding de ta propriété "checked".
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Points : 166
    Points
    166
    Par défaut
    La checkbox est bindé a un settings booléen, le numericupdown (nud) est bindé a un settings decimal. Pas sur de comprendre pourquoi utiliser un converter.
    ce qui m'etone c'est que l'erreur se produise sur le settings du nud quand je clic la checkbox, alors que les 2 settings n'ont rien en commun.
    Et l'erreur ne se produit que dans le scenario que je decris:
    - si je retire le nud -> pas d'erreur
    - si le nud n'est pas bindé -> pas d'erreur
    - si le nud est sur la meme tabpage que la checkbox -> pas d'erreur
    - si le nud est sur une autre tabpage mais que cette page est affichée au moins une fois avant de cliquer la textbox -> pas d'erreur.

  4. #4
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Ok, j'avais pas compris cela. Tu utilise quel numeric updown?
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Points : 166
    Points
    166
    Par défaut
    J'utilise le numeric updown de la toolbox par defaut.

    Il est suggéré ici http://www.pcreview.co.uk/forums/bug...-t1240306.html, de forcer le BindingContext de la tabpage contenant le numeric updown avant de créer le binding.

    Après quelques tests il semblerait que quand le binding est fait dans la sub New() du form il faille forcer le BindingContext:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            NUDPage.BindingContext = Me.BindingContext
            Me.NUD.Value = My.MySettings.Default.SETTING1
            Me.NUD.DataBindings.Add(New Binding("Value", My.MySettings.Default, "SETTING1",
                                                              True, DataSourceUpdateMode.OnPropertyChanged))
    Mais en créant le binding moi même dans le Form_Load pas besoin de changer le BindingContext.

    Dans les 2 cas le binding fait pendant le Design Time en utilisant l'assistant visual studio ne fonctionne pas, il faut ecrire le binding soit même.

  6. #6
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Ha mais tu es en windows-form... mdr.
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Points : 166
    Points
    166
    Par défaut
    Ca m'apprendra a être plus specifique la prochaine fois.

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

Discussions similaires

  1. calculer montant checkbox et checked une fois coché
    Par lolodelp dans le forum Langage
    Réponses: 1
    Dernier message: 06/02/2014, 15h43
  2. Réponses: 7
    Dernier message: 06/08/2011, 23h40
  3. [ASE]optimisation d'une proc stock trés lente
    Par 461219 dans le forum Adaptive Server Enterprise
    Réponses: 8
    Dernier message: 04/01/2008, 13h23
  4. Réponses: 1
    Dernier message: 24/10/2006, 12h10
  5. Update trés lent sur une grosse table
    Par neo.51 dans le forum Oracle
    Réponses: 21
    Dernier message: 14/12/2005, 11h06

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