VB.NET 2003: Wie liest oder schreibt man aus einer in ein Panel geladenen Form auf die Hauptform?

Antwort vom

In VB.NET 2003 greifst du von der im `Panel` geladenen Form auf die Hauptform zu, indem du der eingebetteten Form eine Referenz auf die Hauptform übergibst. **Prinzip:** - Hauptform erstellt Kindform - Hauptform übergibt `Me` - Kindform speichert Referenz - Kindform liest/schreibt Eigenschaften oder Controls der Hauptform ## Hauptform ```vbnet Public Class MainForm Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim f As New ChildForm(Me) f.TopLevel = False f.FormBorderStyle = FormBorderStyle.None f.Dock = DockStyle.Fill Panel1.Controls.Clear() Panel1.Controls.Add(f) f.Show() End Sub Public Property MeinText() As String Get Return TextBox1.Text End Get Set(ByVal Value As String) TextBox1.Text = Value End Set End Property End Class ``` ## Eingeladene Form ```vbnet Public Class ChildForm Inherits System.Windows.Forms.Form Private _main As MainForm Public Sub New(ByVal mainForm As MainForm) MyBase.New() InitializeComponent() _main = mainForm End Sub Private Sub ButtonLesen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonLesen.Click MsgBox(_main.MeinText) End Sub Private Sub ButtonSchreiben_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSchreiben.Click _main.MeinText = "Neuer Wert aus ChildForm" End Sub End Class ``` ## Direkt auf Controls zugreifen Geht auch, ist aber unsauberer: ```vbnet _main.TextBox1.Text = "Hallo" ``` Besser ist eine `Public Property` oder `Public Sub` in der Hauptform. ## Alternative Falls die Form wirklich als Control im Panel liegt, kann auch `Me.Parent` bzw. `Me.ParentForm` helfen. Für sauberes Lesen/Schreiben ist die Übergabe der Hauptform-Referenz aber die beste Lösung. ## Kurzantwort Am besten per Konstruktor eine Referenz auf die Hauptform an die im Panel geladene Form übergeben und dann über `Public Properties` oder `Public Methods` lesen bzw. schreiben.

Kategorie: Technologie Tags: Vbnet Hauptform Panel

Verwandte Fragen

Wie übergebe ich in VB.NET 2003 einer Form in einem Panel die Key-Steuerung?

In VB.NET 2003 / WinForms bekommt eine Form, die in einem Panel steckt, die Tastaturereignisse normalerweise nicht automatisch sauber. Üblich ist: 1. KeyPreview = True auf der Host-Form setzen...

Wie bleibt eine in ein Panel geladene Form in VB.NET 2003 immer so groß wie das Parent-Panel?

In VB.NET 2003 gelingt das am einfachsten so: 1. Formular nicht top-level anzeigen 2. ins Panel einfügen 3. Dock = Fill setzen Beispiel: vb Dim f As New Form2 f.TopLevel = False f.FormBorde...

Wie verschiebe ich in VB.NET 2003 eine übergroße PictureBox in einem Panel per Maus, sodass die Scrollbalken die neue Position automatisch anzeigen?

Ja. In VB.NET 2003 geht das am einfachsten so: PictureBox größer als Panel Panel.AutoScroll = True Beim Ziehen mit der Maus nicht die PictureBox.Location direkt setzen Stattdessen die Scrol...

Wie runde ich in VB.NET 2003 das Ergebnis von 22 / 7 auf und rechne dann mit 28 weiter?

In VB.NET 2003 kannst du zum Aufrunden Math.Ceiling verwenden. Beispiel: vb Dim wert As Double Dim ergebnis As Integer wert = 22 / 7 ergebnis = CInt(Math.Ceiling(wert)) ergebnis = ergebnis + 28...

Wie lässt sich die Neuzeichenzeit eines in VB.NET 2003 gezeichneten Panels mit 6x7 Bildern à 80x60 px verringern?

Um die Neuzeichenzeit in VB.NET 2003 / WinForms für ein Panel mit 42 Bildern à 80×60 px zu verringern, helfen vor allem diese Punkte: 1. Double Buffering verwenden Flackern und un...

Wie fügt man in VB.NET 2003 einem neuen DataSet aus XML ein gefülltes eindimensionales Array per DataTable.Rows.Add(Object()) hinzu?

In VB.NET 2003 / ADO.NET fügst du ein gefülltes 1-dimensionales Array zu einer DataTable im DataSet so hinzu: vb Dim werte() As Object = New Object() {"Max", 25, "Berlin"...

Wie wird in VB.NET 2003 eine PictureBox in einem kleineren Panel zentriert angezeigt, auch bei AutoScroll?

Ja. In VB.NET 2003 geht das, aber PictureBox zentriert sich in einem Panel mit AutoScroll=True nicht automatisch. Die Position muss nach Größe und Scrollbereich selbst gesetzt werden. Beis...

Können XML-DataTables in VB.NET 2003 ineinander verschachtelt werden?

Ja. In VB.NET 2003 / ADO.NET DataSet können XML-Daten so dargestellt werden, dass DataTables logisch verschachtelt wirken — aber nicht als echte DataTable-in-DataTable-Struktur. Kurz gesa...

Wie erstelle ich mit VB.NET 2003 eine Zeichnung aus einem mehrdimensionalen Array und lege mit "rfg" die Reihenfolge fest?

Ja. Das geht in VB.NET 2003, indem du: 1. die Daten in einem Array hältst, 2. nach rfg sortierst, 3. die Bilder in genau dieser Reihenfolge zeichnest. Ein mehrdimensionales Array ist dafür...