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 :

Ajouter des controls à une class héritant d'un panel


Sujet :

VB.NET

  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut Ajouter des controls à une class héritant d'un panel
    Bonjour,

    J'ai une class testpanel qui herite d'un panel.A cette class j'ai ajouté un label.
    Quand je lance le prog le panel apparait mais sans le label.
    Par contre si je déclare le label dynamiquement il apparait bien
    Merci

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 174
    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 174
    Points : 25 115
    Points
    25 115
    Par défaut
    Citation Envoyé par shayw Voir le message
    A cette class j'ai ajouté un label
    comment ? code ?

  3. #3
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Je pense que tu as oublié le Controls.Add(Label1) dans ton panneau.

    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
    Public Class PanneauTest
        Inherits Panel
     
        '///// Controls
        Friend WithEvents Label1 As System.Windows.Forms.Label
     
        '///// Constructeur
        Public Sub New()
            MyBase.New()
            InitializeComponent()
     
            initialiserUI()
        End Sub
     
     
        Private Sub InitializeComponent()
            Me.Label1 = New System.Windows.Forms.Label()
            Me.SuspendLayout()
            '
            'Label1
            '
            Me.Label1.AutoSize = True
            Me.Label1.Location = New System.Drawing.Point(0, 0)
            Me.Label1.Name = "Label1"
            Me.Label1.Size = New System.Drawing.Size(100, 23)
            Me.Label1.TabIndex = 0
            Me.Label1.Text = "Label1"
            Me.ResumeLayout(False)
     
        End Sub
     
        Private Sub initialiserUI()
     
            Controls.Add(Label1)
     
        End Sub
    End Class

  4. #4
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Bonjour

    Maintenant je ne vois ni la panel ni son label

    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
    Public Class ClassTestpanel
        Inherits Panel
     
        Friend WithEvents Label1 As System.Windows.Forms.Label
        Public Sub New()
            Me.Size = New Size(300, 300)
              Me.Visible = False
        End Sub
     
        Private Sub InitializeComponent()
            Me.Label1 = New System.Windows.Forms.Label
            Me.SuspendLayout()
            '
            'Label1
            '
            Me.Label1.AutoSize = True
            Me.Label1.BackColor = System.Drawing.Color.LemonChiffon
            Me.Label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
            Me.Label1.Font = New System.Drawing.Font("Arial", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
            Me.Label1.Location = New System.Drawing.Point(0, 0)
            Me.Label1.Name = "Label1"
            Me.Label1.Size = New System.Drawing.Size(100, 23)
            Me.Label1.TabIndex = 0
            Me.Label1.Text = "TEST"
            '
            'ClassTestpanel
            '
            Me.BackColor = System.Drawing.Color.PowderBlue
            Me.ResumeLayout(False)
     
        End Sub
    End Class
    dans form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Private mypanel As New ClassTestpanel()
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            mypanel.Location = New Point(10, 10)
           mypanel.Visible = True
     
     
    end sub

  5. #5
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Merci _Ez3kiel

    1 oublier d'appeller la sub InitializeComponent() dans le constructeur


    2 ajouter aussi comme tu as écrit initialiserUI()

    en faite je n'ai pas compris pourquoi si j'ajoute un control en mode design
    il faut ajouter la ligne de code Controls.Add(Label1) ?

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 174
    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 174
    Points : 25 115
    Points
    25 115
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private mypanel As New ClassTestpanel
    c'est bien mais sans controls.add quelque part c'est normal de ne rien voir

    en théorie quand on hérite d'un control il n'y a pas d'initializecomponent (rien n'empeche d'en mettre un certes)

    si le but c'est de poser des controles sur un panel, autant faire un usercontrol, au moins tu as la visibilité de ce que tu fais

  7. #7
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    en théorie quand on hérite d'un control il n'y a pas d'initializecomponent (rien n'empeche d'en mettre un certes)
    C'est le Designer qui en met un ... Fais une classe MaTextBox, hérité de textbox, passe en concepteur de vue([Design]), mets "toto" dans la property texte, et au niveau du code de la classe t'auras un initializeComponent (et il n'aura pas rajouté l'appel à initializeComponent depuis le constructeur de la classe)...


    Citation Envoyé par Pol63 Voir le message
    si le but c'est de poser des controles sur un panel, autant faire un usercontrol, au moins tu as la visibilité de ce que tu fais
    Ça dépend de sa finalité, hormis le fait qu'on ai pas le visu (direct j'entend, et encore, avec des bidouilles c'est faisable très facilement), le CustomControl a plein d'avantages et de défauts face à l'userControl.

    Quelques aides pour définir si l'on a besoin d'un CustomControl ou d'un UserControl :

    Vue d'ensemble des contrôles utilisateur et des contrôles personnalisés (C'est pour les web controls mais l'explication reste générique)
    So what's the difference between a Custom Control and User Control?


    Citation Envoyé par Shawyn
    en faite je n'ai pas compris pourquoi si j'ajoute un control en mode design
    il faut ajouter la ligne de code Controls.Add(Label1) ?
    Dans ton cas à toi, ton label doit se rajouter directement sur le panel lorsqu'on créé ce dernier, mais pour une autre personne, peut-être que ce label ne doit se rajouter que selon une condition X.
    Windows te donne les outils pour que tu fasses ton control -relativement- comme tu l'entends en terme de personnalisation, en contre-partie il y a plus de code à taper (dont le Controls.Add géré automatique par le Designer sur un UserControl ou un Form)

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 174
    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 174
    Points : 25 115
    Points
    25 115
    Par défaut
    Citation Envoyé par _Ez3kiel Voir le message
    C'est le Designer qui en met un ... Fais une classe MaTextBox, hérité de textbox, passe en concepteur de vue([Design]), mets "toto" dans la property texte, et au niveau du code de la classe t'auras un initializeComponent (et il n'aura pas rajouté l'appel à initializeComponent depuis le constructeur de la classe)...
    j'avais jamais vu qu'on pouvait faire des choses sur un customcontrol, voyant cette fenêtre grise sans rien dedans proposant d'aller dans le code
    mais apparemment on peut en effet poser des controles et définir leur propriétés
    on en apprend tous les jours (enfin même après autant de jours )

  9. #9
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    j'avais jamais vu qu'on pouvait faire des choses sur un customcontrol, voyant cette fenêtre grise sans rien dedans proposant d'aller dans le code
    mais apparemment on peut en effet poser des controles et définir leur propriétés
    on en apprend tous les jours (enfin même après autant de jours )
    Une vie ne suffit pas pour maîtriser entièrement VS.

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

Discussions similaires

  1. [Débutant] Ajouter des attributs à une classe générée automatiquement par Entity
    Par Pelote2012 dans le forum Entity Framework
    Réponses: 2
    Dernier message: 20/11/2014, 16h07
  2. Ajouter des méthodes à une classe annotée
    Par ThomasEscolan dans le forum Langage
    Réponses: 2
    Dernier message: 04/09/2012, 17h29
  3. Réponses: 1
    Dernier message: 05/10/2009, 03h50
  4. comment ajouter des méthodes à une classe lors Runtime?
    Par revever dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/03/2008, 13h53
  5. ajouter des control dans une onglet de sstab sous VB6
    Par aymane_farissi dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/09/2005, 13h44

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