Controlcollection - Zugriff auf Controls in einem anderen Formular

03/04/2008 - 11:00 von Manfred | Report spam
Hallo Leute,

in meiner Anwendung ist ein Formular (Basisformular) geöffnet.
Dann öffne ich ein weiteres Formular (Zusatzformular).

Nun möchte ich Daten aus einem Feld des Basisformulars in ein Feld des
Zusatzformulars übertragen.

Der Code dazu soll im Basisformular sein.

Soweit ich das verstehe, kann ich über ein Controlcollection-Objekt auf
die Controls eines anderen Formulars zugreifen.

Leider verstehe nicht ganz, wie der Code dazu aussehen soll bzw wie man das
Objekt überhaupt initialisiert.


Dim dummy As New Form2.ControlCollection

ist falsch: Fehler: Für den Parameter "owner" von "Public Sub New(owner as
System.Windows.Forms.Form)" wurde kein Argument angegeben.


Dim dummy As Form2.ControlCollection
Msgbox("dummy.Count") liefert zur LAufzeit den Fehler,
Der Obejektverweis wurd nicht auf eine Objektinstanz festgelegt.



Was mache ich falsch bzw. wie sollte der Zugriff erfolgen?

Für ein paar Tips wàre ich dankbar.

Grüße

Manfred
 

Lesen sie die antworten

#1 Karsten Sosna
03/04/2008 - 12:28 | Warnen spam
"Manfred" schrieb im Newsbeitrag
news:
^^^^^^^^^^^^^
Hier sollte der volle Name(Vor- und Zuname) stehen.

Was mache ich falsch bzw. wie sollte der Zugriff erfolgen?



Ein Problem, mehrere Lösungen:
\\\
Dim f2 As New Form2
Dim f2Col As Control.ControlCollection = f2.Controls

DirectCast(f2.Controls("TextBox1"), TextBox).Text = "Hello world"
'Oder
f2.TextBox1.Text = "Hello world"
'Oder
DirectCast(f2Col("TextBox1"), TextBox).Text = "Hello world"

f2.ShowDialog()
///
Ich weiß das Control eine Text-Eigenschaft hat, DirectCast dient hier nur
zur Vollstàndigkeit. Soll heißen f2.Controls("IrgendeinControl) bzw.
f2Col("IrgendeinControl) liefern ein Objekt vom Typ Control. Controls
besitzen eine eine gewisse Anzahl an Eigenschaften und Methoden, die
Text-Eigenschaft gehört dazu. Hatt man aber jetzt bspw. eine CheckBox so
besitzt diese eine Checked-Eigenschaft. Bei Early-Binding muss man da
dementsprechend casten, was mit DirectCast passiert, da Control keine
Checked-Eigenschaft besitzt.
Grundsàtzlich würde ich aber nicht eine der drei obengenannten Methoden
anwenden, sondern dem Fromular dementsprechend Eigenschaften verpassen.
\\\
Class Form2
Public Property Text1 As String
Get
Return Me.TextBox1.Text
End Get
Set(value As String)
Me.TextBox1.Text = value
End Set
End Property
End Class
///
Im Basisformular dann:
\\\
Dim f2 As New Form2
f2.Text1 = "Hello world"
f2.ShowDialog()
///
Gruß Scotty

Ähnliche fragen