UserControl mit Container

18/07/2009 - 08:25 von Olaf Dregel | Report spam
Guten morgen,
ich 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 .

Das funktioniert. Aber mein Problem:
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?

besten dank
es grüßt olaf
 

Lesen sie die antworten

#1 Peter Götz
18/07/2009 - 10:55 | Warnen spam
Hallo Olaf,

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

Das funktioniert. Aber mein Problem:
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)

Ähnliche fragen