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 :

Implentation de code sans le nom de l'instance. [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Par défaut Implentation de code sans le nom de l'instance.
    Bonjour à tous,

    Voilà mon problème:

    J'ai ce code à implémenter plusieur fois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim binding As New Binding("Text", Chassis, "TotalMass", True, DataSourceUpdateMode.OnValidation, 0)
     
            binding.ControlUpdateMode = ControlUpdateMode.Never
     
            TotalMass_tbox.DataBindings.Add(binding)
    Le problème est que celui-ci est relativement long, et que pour chaque nouveau binding, je dois inventer un nouveau nom...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         TotalMass_tbox.DataBindings.Add(New Binding("Text", Chassis, "TotalMass", True, DataSourceUpdateMode.OnValidation, 0))
    Celui ci est nettement plus concis et je n'ai pas à inventer un nom, en revanche n'ayant plus le nom de l'instance je n'arrive pas à appliquer cette ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    binding.ControlUpdateMode = ControlUpdateMode.Never
    J'ai essayer de creer une classe binding pour que le constructeur implémente ce code par defaut, j'ai essayé "Me"....

    Comment dois je faire?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Gualino Voir le message
    pour chaque nouveau binding, je dois inventer un nouveau nom...
    Non, pas du tout... tu peux très bien réutiliser le même nom. Le nom est celui de la variable, pas de l'instance (la notion de "nom d'une instance" n'existe pas d'ailleurs). Tu peux très bien faire pointer la même variable vers une autre instance. Réutilise simplement ta variable binding en lui affectant un nouveau Binding.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim binding As New Binding("Text", Chassis, "TotalMass", True, DataSourceUpdateMode.OnValidation, 0)
    binding.ControlUpdateMode = ControlUpdateMode.Never
    TotalMass_tbox.DataBindings.Add(binding)
     
    binding = New Binding("Text", Chassis, "Length", True, DataSourceUpdateMode.OnValidation, 0)
    binding.ControlUpdateMode = ControlUpdateMode.Never
    Length_tbox.DataBindings.Add(binding)
     
    binding = New Binding("Text", Chassis, "Width", True, DataSourceUpdateMode.OnValidation, 0)
    binding.ControlUpdateMode = ControlUpdateMode.Never
    Width_tbox.DataBindings.Add(binding)
     
    ...

    Cela dit, c'est pas encore idéal, parce que ça fait beaucoup de répétition. Perso j'implémenterais une méthode dédiée pour ça :

    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
    Sub SetBinding(ByVal ctl As Control, ByVal propertyName As String, ByVal dataSource As Object, ByVal dataMember As String)
     
        Dim binding As New Binding(propertyName, dataSource, dataMember, True, DataSourceUpdateMode.OnValidation, 0)
        binding.ControlUpdateMode = ControlUpdateMode.Never
        ctl.DataBindings.Add(binding)
     
    End Sub
     
     
    ...
     
    SetBinding(TotalMass_tbox, "Text", Chassis, "TotalMass")
    SetBinding(Length_tbox, "Text", Chassis, "Length")
    SetBinding(Width_tbox, "Text", Chassis, "Width")
    ...

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Par défaut
    Merci Tomlev!

    Oui justement je suis en train de faire çà dans une boucle:
    http://www.developpez.net/forums/d11...g/#post6255014

    Et j'étais bloqué à cause de çà!

  4. #4
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Citation Envoyé par Gualino Voir le message
    Celui ci est nettement plus concis et je n'ai pas à inventer un nom, en revanche n'ayant plus le nom de l'instance je n'arrive pas à appliquer cette ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    binding.ControlUpdateMode = ControlUpdateMode.Never
    J'ai essayer de creer une classe binding pour que le constructeur implémente ce code par defaut, j'ai essayé "Me"....

    Comment dois je faire?
    Pour ça, vous pouvez utiliser les "initializers" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TotalMass_tbox.DataBindings.Add(New Binding("Text", Chassis, "TotalMass", True, DataSourceUpdateMode.OnValidation, 0) With {.ControlUpdateMode = ControlUpdateMode.Never})
    (je programme en C#, pas en VB, mais la syntaxe doit ressembler à ça)

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

Discussions similaires

  1. [2008R2] connexion à distance sans le nom de l'instance.
    Par scazikiss dans le forum Administration
    Réponses: 6
    Dernier message: 14/06/2013, 10h59
  2. Réponses: 3
    Dernier message: 02/03/2006, 09h49
  3. Réponses: 3
    Dernier message: 27/01/2006, 15h48
  4. Comment utiliser un composant sans son nom ?
    Par aliwassem dans le forum Langage
    Réponses: 4
    Dernier message: 03/10/2005, 20h47
  5. exporter une table sans le nom de colonnes ?
    Par vuldos dans le forum Access
    Réponses: 13
    Dernier message: 11/10/2004, 19h56

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