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 :

[VB 2010] tests (et autres actions) sur objets créés dynamiquement


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut [VB 2010] tests (et autres actions) sur objets créés dynamiquement
    Bonjour à tous,
    Comme je l'ai expliqué dans ce post, je créé des objets dynamiquement selon le code ci-dessous :
    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
    Private Sub Button_Ajt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Ajt.Click
    contObj = contObj + 1
            Dim ChpAjtLoyLog As New TextBox()
            With ChpAjtLoyLog
                .Name = "TextBox_Surf_Appart_" & contObj
                .Top = 10 + 25 * contObj
                .Left = 330
                .Visible = True
                .Width = 70
            End With
            TabPage2.Controls.Add(ChpAjtLoyLog)
     
            Dim ChpAjtchkLog As New CheckBox()
            With ChpAjtchkLog
                .Name = "CheckBox_Appart_" & contObj
                .Top = 10 + 25 * contObj
                .Left = 430
                .Text = "Eligible"
                .Visible = True
                .Width = 130
            End With
            TabPage2.Controls.Add(ChpAjtchkLog)
     
            Button_Ajt.Top = 10 + 25 * (contObj + 1)
    Je souhaite tester si l'une des checkbox est cochée. Comme leur nom est composé avec un "index de compteur", je pensais utiliser une boucle for next.

    Malheureusement ça aurait été trop simple, mon code ci-dessous ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim test As Boolean = False
            For i = 1 To contObj Step 1
                If CheckBox_Appart_ &i.ckecked = True Then
                    test = True
     
                End If
            Next
            If test = True Then
                MsgBox("au moins une case chochée")
            End If
    D'autre part, je vais devoir effectuer des calculs avec les différentes textbox (par exemple les additionner) qui ont été crées de le même manière, je pense donc utiliser la même méthodologie.

    Quelqu'un aurait une piste ?
    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Re-Bonjour,

    Même réponse que dans ton autre post
    Il ne faut jamais baser un traitement sur le nom des variables (peut importe leur type). C'est voué à l'échec et c'est très dangereux lorsque ton code évolura.

    Le plus simple ne serait-il pas de maintenir une liste de tes checkBox pour ensuite la parcourir et tester si elles sont checked ?

    Bon code,
    J@ck.
    et comme te l'a dit ZenZiTone dans l'autre post tu peux aussi utiliser un dictionary, ou même le tag des controls que tu veux parcourir pour les différencier.

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  3. #3
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Merci de vous pencher sur ma question.

    Citation Envoyé par J@ckHerror Voir le message
    Le plus simple ne serait-il pas de maintenir une liste de tes checkBox pour ensuite la parcourir et tester si elles sont checked ?
    Le "truc" c'est que je ne sais pas à l'avance combien de ligne je vais avoir. C'est pour cette raison que je créé des textbox et checkbox dynamiquement ...

    Je ne comprends pas trop le concept de dictionnaire. C'est une collection d'objet c'est ça ?
    Je n'arrive pas à comprendre comme ça fonctionne et comment l'adapter à mon code.
    Pourriez vous m'éclairer sur ce point ?


    Si je reprend le code de ZenZiTone en l'adaptant, je pourrais faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each obj As Control In Me.Controls
     For i = 1 To contObj Step 1
                If obj.Tag.ToString = "TextBox_Surf_Appart_" & i Then
                    'action à réaliser
                End If
    next
            Next
    Mais dans l'action à réaliser, comment je fais pour lire le contenu de ma textbox ? ou dans le cas d'une checkbox, pour savoir si elle est cochée ?

    D'autre part, pour chacune de mes textbox, lorsque le focus sera perdu je veux vérifier si l'utilisateur a bien entré un nombre (isnumeric). Je veux donc créer un petit sub qui va vérifier cela, si tel n'est pas le cas afficher un message d'erreur et vider le contenu de la textbox en question.
    Je pensais donc stocker le nom de la textbox dans une variable (globale) pour pouvoir interagir facilement dans un autre sub. Mais apparemment ce n'est pas la bonne méthode.
    Comment je pourrais faire en utilisant le code de ZenZiTone ?

    je sais que ça fait beaucoup de questions
    Merci d'avance pour vos réponses

  4. #4
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par djedje-08 Voir le message
    Je ne comprends pas trop le concept de dictionnaire. C'est une collection d'objet c'est ça ?
    Dans les grosses lignes c'est ça. La différence avec une liste (List(Of ...)) est que le dictionnaire associe une valeur à une clef. Après je ne sais pas si ça s'adapterais bien à ton cas, il nous manque des infos sur ce qu'est une ligne, etc.. En tous cas je te propose de consulter la doc MSDN à ce sujet pour en savoir plus.

    Citation Envoyé par djedje-08 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each obj As Control In Me.Controls
     <s>For i = 1 To contObj Step 1</s>
                If obj.Tag.ToString = "TextBox_Surf_Appart_" & i Then
                    'action à réaliser
                End If
    <s>next</s>
            Next
    Tu n'as pas besoin de boucle supplémentaire, le test "If composant.tag = "MonIdentifieur"" te permet d'identifier les CheckBoxes que tu as ajoutés dynamiquement.

    Citation Envoyé par djedje-08 Voir le message
    Mais dans l'action à réaliser, comment je fais pour lire le contenu de ma textbox ? ou dans le cas d'une checkbox, pour savoir si elle est cochée ?
    Si tu souhaites lire la valeur de la CheckBox à un instant défnit, tu as juste à caster ton control (dans le "If...") en CheckBox et lire la propriété Checked.

    Citation Envoyé par djedje-08 Voir le message
    D'autre part, pour chacune de mes textbox, lorsque le focus sera perdu je veux vérifier si l'utilisateur a bien entré un nombre (isnumeric). Je veux donc créer un petit sub qui va vérifier cela, si tel n'est pas le cas afficher un message d'erreur et vider le contenu de la textbox en question.
    Je pensais donc stocker le nom de la textbox dans une variable (globale) pour pouvoir interagir facilement dans un autre sub. Mais apparemment ce n'est pas la bonne méthode.
    Comment je pourrais faire en utilisant le code de ZenZiTone ?
    Même dada que ton précédent post : utilise le Addhandler sur ta TextBox crée dynamiquement, sur un événement de type MouseLeave ou LostFocus (je n'ai pas les nom exacte en tête)

  5. #5
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Merci beaucoup pour ton aide, mais pour le coup, je galère un peu à relier tous les éléments.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            Dim ChpAjtLoyLog As New TextBox()
            With ChpAjtLoyLog
                .Name = "TextBox_Surf_Appart_" & contObj
                .Top = 10 + 25 * contObj
                .Left = 330
                .Visible = True
                .Width = 70
            End With
            TabPage2.Controls.Add(ChpAjtLoyLog)
            AddHandler ChpAjtLoyLog.LostFocus, AddressOf VerifNb
    Jusque là, tout va bien, mais le code ci-dessous ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Sub VerifNb()
     
            For Each obj As Control In Me.Controls
                If obj.Tag.ToString = "TextBox_Surf_Appart" Then
                    If IsNumeric(obj.Text) Then
                    Else
                        obj.BackColor = Color.Red
                        obj.Text = ""
     
                    End If
                End If
            Next
        End Sub
    J'ai l'erreur suivante sur la ligne n°4 : La référence de l'objet n'est pas définie a une instance d'un objet

    J'ai essayé avec le code ci-dessous, mais l'erreur est identique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If obj.Tag.ToString = "ChpAjtPrixLog" Then
    De plus, je ne suis pas certain que les codes ci-dessous vont fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IsNumeric(obj.Text)
    obj.BackColor = Color.Red
    obj.Text = ""
    Pourriez vous m'aiguillez ?

  6. #6
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Les événements standards sont généralement associés avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sender As Object, e As EventArgs
    Ce sont des variables qui permettent d'associer des données à l'événement. Si tu utilises l'intellisense lorsque tu fais le AddressOf (tu tapes le nom de la méthode à créer puis tu fais Ctrl+Espace, il te propose de générer la méthode), il génère automatiquement le corps de la méthode avec en paramètre ce que j'ai mis ci-dessus. Ainsi, tu pourras utiliser le "sender" (en faisant le bon cast) pour récupérer l'objet qui a déclenché l'événement. Ainsi tu n'auras pas besoin de faire de boucle sur tous tes contrôles : ça va alléger tes traitements !

    Petite précision, tu risques de voir apparaitre une exception "InvalidOperationException" avec le message "Le contrôle nom du contrôle a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé". Pour comprendre et résoudre ce problème, voici un petit lien vers la MSDN.

  7. #7
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Je suis désolé, je suis débutant en VB, je n'y connais pas grand chose.
    Je ne comprends pas tout ce que tu m'as expliqué.
    Si je tape {AddHandler ChpAjtLoyLog.LostFocus, AddressOf VerifNb et que je fais Ctrl Espace, rien ce se passe.
    Si je fais la même chose après avoir supprimé mon sub, je vois bien une liste s'afficher, dans laquelle la ligne Version est sélectionnée par défaut. Si je clique sur cette ligne, VerifNb est remplacé par Version

    J'ai bien essayé de lire ton lien "faire des appels thread-safe aux contrôles Windows Forms", mais je n'y comprends rien. Je ne sais pas ce que sont les "thread-safe", la méthode "invoke" etc ...

    Je ne comprends pas non plus ce que tu appelles "le bon cast"

    Comme dis, je suis désolé, je suis débutant en VB, je n'y connais pas grand chose, je m'attèle là à mon premier projet ... J'avais bricolé quelques macro en VBA pour Excel, mais je voudrais maintenant faire quelque chose de plus intéressant, d'où mon passage en VB

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tag n'est pas ce qu'il y a de mieux
    pas d'interthread possible ici, donc pas de question à se poser sur le thread safe

    le mieux reste la collection
    quand on veut enregistrer un nombre (ou autre) ou utilise une variable de type nombre (ou autre)
    quand on veut stocker plusieurs trucs mais qu'on ne sait pas à l'avance combien (ton cas) on utilise une collection (la plus simple étant le list of)
    (et il devient alors inutile de définir le .Name du controle)

    le principe du list(of ) c'est que tu peux faire des .add, des .remove et accéder à l'élément stocké à un index list(i) (et donc faire un for i as integer = 0 to mylist.count -1)
    le principe du dictionary c'est que tu lis 2 éléments entre eux, l'un étant désigné comme la clé, et l'autre la valeur
    .add prend alors 2 paramètres (les 2 éléments), et il est possible d'accéder à un couple d'élément par l'index ou à la valeur par la clé
    ici tu ajoutes des textboxes et des chekboxes, donc le dictionary devient utile

    ca donnerait sur le form
    private _Chks as new dictionary(of textbox,checkbox)
    quand tu as fait les 2 controls.add tu fais
    _Chks.add(ChpAjtLoyLog,ChpAjtchkLog)


    après dans n'importe quelle sub tu peux accéder à la liste des objets dynamimques créés, car en plus d'être ajoutés sur l'interface ils sont ajoutés dans ta collection qui sert à les retrouver facilement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for each t in _Chks.Keys ' parcours de tous les textboxes ajoutés
      dim c = _Chks(t) ' chargement dans la variable c du checkbox lié à cet instance de textbox
      ' traitement
    next

    après ca c'est pour le principe, mais quand on doit ajouter 2 ou plus de choses à chaque fois, on créé plutot un usercontrol
    c'est un peu comme un form, en mode design on peut poser plusieurs trucs dessus (un textbox et un chk) et après ce usercontrol apparait dans la boite à outils, ou tu peux l'instancier, ce qui fait moins de lignes de code vu que les 2 sont sur le même container
    et donc un list(of ) suffirait plutot qu'un dictionary

    il y a aussi le FlowLayoutPanel qui permet d'éviter de coder la position des controles, ils sont ajoutés les un à côté des autres dans la direction qu'on veut sans se poser de question (et en supprimer un redécale tout le monde sans le coder aussi)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    OK, merci Pol63 pour toutes ces explications.
    D'après ce que je comprends, dans mon cas il faudrait plutôt que j'utilise un usercontrol dans la mesure où chaque "ligne" que je créé se compose de 3 textbox et 1 chechbox.
    Tu pourrais me donner un exemple simple de création et d'accès à des "objets" à travers un usercontrol ?
    Merci d'avance

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ah oui j'y ai pensé mais j'ai oublié de l'expliquer ^^

    tu approches possibles
    la version noob/simple c'est d'accéder aux sous controles
    instanceUC.teltextbox.text
    après pour les events ils ne seront pas listables dans les combobox en haut de l'éditeur de code, forcément, donc il faudrait passer par des addhandler, mais c'est chiant

    après la version plus propre c'est de coder dans le usercontrol, tu peux t'abonner aux events des txt et chk
    si tu as des choses qui doivent être accessibles depuis le form tu fais des propriétés, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public property TextMachin as string
      get
        return me.textboxmachin.text
      end get
      set (value as string)
        me.Textboxmachin.text = value
      end set
    end property
    tu peux faire des propriétés plus complexes qu'une simple redirection comme dans cet exemple

    tu peux aussi créer des events dans ce usercontrol, que ca soit pour relayer les events des sous controles ou faire des nouveaux events sur des conditions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public event ChkChanged (sender as object, e as system.Eventargs)
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RaiseEvent ChkChanged (me, system.eventargs.empty)

    pour des infos sur les events et les arguments de ceux ci : http://www.developpez.net/forums/d71...t/#post4157798
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Merci pour cette réponse.
    Je suis désolé, je n'y comprends pas grand chose, je dois vraiment être nul .
    comment j'utilise instanceUC.textbox.text ?

    J'ai essayé d'utiliser ton code pour ajouter une textbox avec le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
         Public Property TextMachin As String
            Get
                Return Me.CheckBox_Appart_1.Text
            End Get
            Set(ByVal value As String)
                Me.CheckBox_Appart_1.Text = value
            End Set
        End Property
        End Sub
    Mais il semblerait que ton code ne doive pas être être place dans un sub.
    J'ai donc essayé le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     
        End Sub
     
        Public Property TextMachin As String
            Get
                Return Me.CheckBox_Appart_1.Text
            End Get
            Set(ByVal value As String)
                Me.CheckBox_Appart_1.Text = value
            End Set
        End Property
    Mais, d'une part, je ne vois pas comment lancer ce code et d'autre part, dans la mesure où il me faut indiquer le nom de ma textbox, je ne vois pas en quoi ça me fait avancer ?

    J'ai simplement besoin de créer des textbox et checkbox dynamiquement et de pouvoir accéder à leurs propriétés (.text et .checked) une à une de la manière la plus simple possible ...

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ca aurait été bien d'apprendre les bases de la POO et les bases du langage avant de commencer à coder
    car il faut au moins connaitre ce qu'est une instance, une classe, une propriété, Me, une collection ...
    un cours ici : http://plasserre.developpez.com/cours/vb-net/

    un usercontrol est avant tout une classe héritant de usercontrol
    on y pose des controles dessus, et on peut y placer du code

    si tu fais un UC avec 3 textbox et un checkbox dessus tu peux ensuite en poser sur des forms, y compris dynamiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim u as new MonUC
    me.flp.controls.add(u) ' comme dit précédemment un flowlayoutpanel c'est bien
    myListDeUC.add(u)
    pour savoir si le chk de ton UC est coché le mieux reste de mettre une propriété dans le code du UC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public property IsCoché as boolean
    ' get et set ...
    le get et le set doivent rediriger vers me.chk.checked comme expliqué précédemment
    ainsi quand tu vas parcourir les UC tu pourras faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for each u in myListDeUC
      if u.IsCoché then
       '...
      end if
    next
    le iscoché renverra vers le chk contenu sur l'instance de UC chargé dans le tour de boucle
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #13
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Merci beaucoup de te pencher sur ma question et pour ta patience. Bien que la solution que tu me proposes soit très propre d'un point de vue codage, elle est un peu trop compliqué pour moi. Je cherche à créer une petite application simple, et ne souhaite pas m'embarquer dans des codes trop complexes que je ne comprend pas.

    N'est-il vraiment pas possible de revenir à la solution que j'avais évoquée au départ (test avec boucle for/next) qui est également évoque sur ce post mais que je n'arrive pas à adapter ?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    désolé mais je n'enseigne pas le bricolage

    les choses paraissent toujours compliqué tant qu'on ne les comprends pas, d'où le lien vers le cours
    avant de commencer .net j'ai lu l'ensemble de ce cours en quelques dizaines d'heures (il est néanmoins possible de survoler les parties qu'on est sûr de pas utiliser, mais il faut bien assimiler les bases)
    ce n'est pas la mer à boire, et après on est paré

    en plus tu penseras surement que c'est une perte de temps énorme, mais c'est l'inverse
    avec du bricolage tu pourras arriver à un truc qui fonctionne parfaitement mais avec des centaines de lignes de code, alors qu'une fois qu'on connait la POO on fait ton truc avec 10 à 15 fois moins de code, donc c'est du temps de gagné
    ajouté à cela qu'avec du code propre on peut modifier le fonctionnement (évolutions/ajustements) très rapidement en modifiant une ou deux lignes de code et avec peu de tests, alors qu'avec du code spaghetti tu vas avoir parfois des dizaines de ligne de code à modifier, ne serait-ce que pour modifier des emplacements ou des tailles, et des bugs qui apparaissent de partout

    après libre à toi de continuer sur ta lancée et de trouver quelqu'un qui te guide sur ce terrain


    ici http://www.developpez.net/forums/d15...ge-picturebox/ tu peux voir quelqu'un qui avait visiblement les bases du langage mais pas de notion de POO
    avec quelques explications il a rapidement pu comprendre et faire du code propre et efficace, comme quoi ca peut aller vite
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. [VB 2010] Evénement sur objet créé dynamiquement
    Par djedje-08 dans le forum VB.NET
    Réponses: 6
    Dernier message: 18/08/2016, 10h37
  2. Ajouter des Listener sur des objets créés dynamiquement
    Par floctc dans le forum Composants
    Réponses: 10
    Dernier message: 23/04/2010, 16h35
  3. addEventListener sur objet créé dynamiquement
    Par Jim_Nastiq dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/10/2009, 16h20
  4. Réponses: 9
    Dernier message: 31/05/2006, 11h56
  5. action sur objet graphique???
    Par ricardvince dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 27/04/2006, 18h53

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