Hallo Olaf,
Post by Olaf Dregelich habe eine Usercontrol als Container erzeugt.
<Designer("System.Windows.Forms.Design.ParentControlDesigner,
System.Design", GetType(IDesigner))> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class TestControl
Inherits .....
Im Usertrol ist bereits ein Panel enthalten - und in diesen
sollen neu aufzunehmende Controls platziert werden, und
nicht im eigentlichen UserControl.
Wie kann man das erreichen?
Dein UserControl ist ein Container, der eine Controls-
Auflistung hat. Dein Panel ist also in der Controlsauflistung
Deines UserControls enthalten.
Wie das UserControl hat auch das Panel eine Controls-
auflistung und dieser kannst Du beliebige Controls
hinzufügen.
Am folgenden Beispiel kannst Du die Sache mit den Controls-
auflistungen der verschiedenen Container verfolgen.
Erst wird der Controlsauflistung der Form ein Panel
hinzugefügt und anschliessend der Controlsauflistung des
Panels eine Textbox.
Du kannst den Beispielcode einfach in ein leeres
Formmodul (Form1.vb) kopieren.
' /// Code in Form1.vb
Public Class Form1
Private WithEvents Panel1 As Panel
Private WithEvents Textbox1 As TextBox
Private Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load
Panel1 = New Panel
With Panel1
.SetBounds _
(10, 10, _
Me.ClientSize.Width - 20, _
Me.ClientSize.Height - 20)
.BackColor = Color.Red
.Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right Or _
AnchorStyles.Bottom
End With
Me.Controls.Add(Panel1)
Textbox1 = New TextBox
With Textbox1
.Font = New Font("Arial", 12)
.SetBounds _
(5, 5, _
Panel1.ClientSize.Width - 10, _
.Height)
.Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right
.Name = "Textbox1"
.Text = .Name
End With
Panel1.Controls.Add(Textbox1)
End Sub
End Class
' \\\ E N T E
Nach dem Programmstart siehst Du Deine Form
mit dem rot eingefärbten Panel und darauf eine
Textbox.
Beim Erstellen eines Usercontrols läuft das nicht anders
ab, nur ist dabei eben der äussere Container erst mal
keine Form, sondern eben Dein Usercontrol.
Im Designer erstellst Du erst Dein UserControl,
ziehst auf dieses Dein Panel und in dieses Panel
legst Du dann eine Textbox.
Wenn Du Dir danach den vom Designer erzeugten Code
in UserControl.Designer.vb ansiehst, dann sieht der fast
genauso aus, wie obiger Beispielcode.
In der Sub InitializeComponent() werden je eine Instanz
eines Panels und eine Instanz einer Textbox erzeugt.
Anschliessend wird der Controlsauflistung des Panels
die Textbox hinzugefügt:
Panel1.Controls.add (TextBox1)
und danach werden die Eigenschaften des Panels
und der Textbox mit den entspr. Werten versorgt.
Zum Schluss wird das Panel der ControlsAuflistung Deines
UserControls hinzuugefügt
UserControl1.Controls.add (Panel1)
Unter
www.gssg.de -> Visual Basic -> VB.net
findest Du eine Vielzahl von Beispielen, bei denen
Controls irgendwelchen Controlsauflistungen hinzugefügt
werden.
Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)