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 :

creation de labels (evenement clique)


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 104
    Par défaut creation de labels (evenement clique)
    Bonjour à tous.

    En fait je voudrais créer dans mon application un formulaire "rappel" en quelque sorte.

    exemple concret :
    Je suis dans un formulaire1
    Je rentre un numero dans une textbox1
    les textbox 2 , 3 et 4 prennent une certaine valeur

    au clique sur le bouton "lister" celui ci créer un label dans un formulaire2 dont la proprité label.text correspont à : textbox1.text & textbox2.text & textbox3.text & textbox4.text
    (c'est pas ça mon problème)


    Maintenant si je rentre un nouveau numero dans la textbox1 et que je re-liste
    Il me crée un nouveau label en dessous du premier

    Finallement en cliquant sur le bouton effacer il efface tous les labels.
    comment je pourrais faire cela?


    Création d'un label "label1" quand je clique sur "Bouton1"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim Label As New Label
            Label.Location = New System.Drawing.Point(56, 144)
            Label.Name = "Label1"
            Label.Size = New System.Drawing.Size(104, 24)
            Label.TabIndex = 0
            Label.Text = "Label1"
            Me.Controls.Add(Label)
        End Sub
    Le problème c'est que suivant le nombre de labels déjà présent le nouveau label changera de position...
    Il faudrait que le premier label prenne une certaine position, le 2nd se decale d'un certaine valeur par rapport a cette position etc... et je sais pas comment gérer ça.

  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
    Je ne vois pas ce que tu veux faire... un screen peut etre ? Sinon ou est le soucis exactement ?
    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
    tu peux garder une référence du dernier label
    genre private _lastlabel as label

    et dans la sub tu fais newlabel . top = _lastlabel.top + 50
    _lastlabel = newlabel
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    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
    Moi je garderais plutot une trace du point le plus bas du dernier composant ajouté. Cela permet de gérer des controles de hauteurs différentes.
    La position du prochain controle à ajouter est alors "dernier point + un décalage fixe représentant l'espacement vertical des composant".

    Voila.
    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

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 104
    Par défaut
    Merci, j'ai effectivement fait comme cela.
    Comme le dit Sperot 51 j'ai gardé en mémoire la place du dernier label et je decale par rapport à celui çi (pour le moment j'ai pas besoin de label de taille differente)

    Mais en fait cela me pose un problème parce que du moment que je reste dans l'application aucun souci.
    Mais si je ferme mon appli alors tout est effacer de la mémoire... Et sachant que c'est justement pour garder en mémoire certaines informations c'est pas très pratique.

    La seule solution à ma connaisance pour garder cela en mémoire c'est d'utiliser une "aide" exterieur à l 'application. Et c'est ce que j'essaye de faire.

    En fait quand je clique sur le bouton lister, j'enregistre un fichier qui porte le numero correspondant à mes informations (chaque numero est unique, et correspond à des données précises).
    J'enregistre egalement un fichier "Rappels" qui liste seulement les numéros à la suite séparés par des virgules.

    Maintenant au chargement de mon formulaire, je charge le fichier rappels que je découpe en tableau. Et je charge en fait les fichiers qui sont sont lister.

    exemple: j'enregistre 3 numeros 1, 2 et 3)
    JE crée donc 3 fichiers nommées 1.txt , 2.txt et 3.txt (avec son contenu)
    Et je remplis donc mon fichiers rappels comme ceci:
    ,1,2,3
    Comme au chargement de mon formulaire j'ouvre les fichiers qui porte le nom des numeros de la liste.

    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
     
     
        Sub Lire_Fichier_Rappels()
     
            Try
     
                Dim srrappels As StreamReader = File.OpenText("\My Documents\aip_ressources\Rappels.txt")
     
                Dim fichier As String
     
                Dim tabrappels As String()
     
                Do
     
                    fichier = srrappels.ReadToEnd
     
                    If Not fichier Is Nothing Then
     
                        tabrappels = fichier.Split(",")
                        srrappels.Close()
                        For Each valeur As String In tabrappels
     
                            'Ceci est seulement un test :
                            ''''''
                            'Dim x As String
                            ' x = Join(tabrappels)
                            'TextBox1.Text = x
                            ''''''
     
     
                            'Dim i As Integer
                            'Dim SRvaleur As StreamReader = File.OpenText("\My Documents\aip_ressources\Rappels\" & valeur & ".txt")
                            'Dim lecture As String
                            'lecture = SRvaleur.ReadToEnd
                            ' TextBox1.Text = lecture
     
                            TextBox1.Text = valeur
     
     
                            'Dim box As TextBox
                            'box = New TextBox
                            'box.Name = "Box" & valeur
                            'box.Multiline = True
                            'box.ReadOnly = True
                            'box.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
                            'box.Size = New System.Drawing.Size(234, 38)
                            'box.Left = 10
                            'box.Top = i * 40
                            'box.Width = 150
                            'box.Text = Information.Box_Code_PSV.Text & vbCrLf & Information.Box_Commune.Text & vbCrLf & Information.Box_Nom_PSV.Text & vbCrLf & Information.Box_Type_Analyse.Text
                            'Me.Controls.Add(box)
     
                        Next
                        Exit Do
                    End If
        Loop Until fichier Is Nothing
        Catch ex As Exception
            End Try
    end sub
    Pour l'instant j'affiche juste dans une textbox (crée manuellement) un numéro listé.



    Alors j'ai 2 questions:
    est ce que je me complique pas la vie en faisant comme ça?
    -Qu'est ce qui va pas dans mon code (même le code étant en commentaire )

    -Sachant que ce code là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        'Dim SRvaleur As StreamReader = File.OpenText("\My Documents\aip_ressources\Rappels\" & valeur & ".txt")
                            'Dim lecture As String
                            'lecture = SRvaleur.ReadToEnd
                            ' TextBox1.Text = lecture
    N'affiche pas le contenu du fichier "valeur".txt
    Et que si j'écris cela en Mettant la ligne
    TextBox1.Text = lecture
    en commentaire et en ajoutant la ligne
    TextBox1.Text = valeur
    Alors la valeur ne veut plus s'afficher :/
    merci de votre aide

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 104
    Par défaut
    EN fait le problème c'est qu'a la decoupe en tableau de mon fichier il me généré une colonne vide. Du coup il pouvait pas ouvrir le fichier texte correspondant vue qu'il n'existait pas :/

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

Discussions similaires

  1. [DOM] Ajout evenement clique sur un <option>
    Par antrax2013 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/06/2008, 09h25
  2. [JButton] evenement clique souris, écouteur
    Par nasriOM dans le forum Composants
    Réponses: 1
    Dernier message: 17/01/2008, 15h33
  3. [tkinter] evenement : clique gauche et droit
    Par CaptainChoc dans le forum Tkinter
    Réponses: 2
    Dernier message: 15/10/2007, 15h07
  4. [c#] empecher la creation du label avec un Textbox
    Par orli1x51 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/07/2006, 12h16
  5. creation d'un evenement
    Par Abdou1 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/07/2006, 09h03

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