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
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
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
Bonjour
Maintenant je ne vois ni la panel ni son label
dans form1
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
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
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) ?
c'est bien mais sans controls.add quelque part c'est normal de ne rien voir
Code : Sélectionner tout - Visualiser dans une fenêtre à part Private mypanel As New ClassTestpanel
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
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)...
Ç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?
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.Envoyé par Shawyn
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)
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)
Partager