Frage von Braendosch, 52

Von Form2 Eigenschaft in Form 1 ändern Visual Basic?

Hallo Zusammen, ich habe folgendes Problem. Ich habe so etwas wie einen Texteditor erstellt und möchte nun die Farbe des Textes in TextBox1 ändern. Die Schriftart bzw. Größe habe ich hinbekommen. Ich habe eine Form2 erstellt mit verschiedenen Buttons auf denen die Farbe steht. Zum Beispiel steht auf btnRot "Rot" in roter Farbe. Nun ist die Frage wie ich auf die TextBox in Form1 zugreifen kann? Hoffe ihr könnt mir helfen!

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von CrystalixXx, 35

Noch besser (und im Sinne der objektorienterten Programmierung) wäre es, wenn du das Prinzip umdrehst. Du rufst in Form1 die Form2 auf und wertest die Eigenschaften nach dem Schließen von Form2 in Form1 aus. Beispiel-Code für den Aufruf:

Using frm As New Form2
If frm.ShowDialog() = DialogResult.Ok Then
Me.TextBox1.ForeColor = frm.SelectedColor
End If
End Using

Dazu musst du in Form2 natürlich die Eigenschaft "SelectedColor" definieren, die je nach Farbauswahl die entsprechende Farbe zurückgibt.

Antwort
von EightSix, 17

Da das ganze die OO-Programmierung betrifft (die Formulare sind ja Objekte) und du dich aber jetzt schon mit einer GUI herumschlägst hast du sehr vieles Wichtiges beim Lernen einfach übersprungen.

Such ein Anfängertutorial dass dich dann auch in die OOP einführt und komm später auf dein Problem zurück.

Antwort
von xGlumi, 22

Der wohl einfachste Befehl wäre:

Form1.TextBox1.ForeColor = Color.Red

MFG xGlumi

Kommentar von CrystalixXx ,

Default-Instanzen von Formularen sollte man am besten gar nicht erst verwenden, da sie lediglich aus Kompatibilitätsgründen zu VB6 wieder Einzug erhalten haben. Es gibt viele Anfänger, die diese Default-Instanzen nutzen und sich dann wundern, dass nichts passiert, wenn an anderer Stelle explizit eine neue Instanz angelegt wurde und eigentlich in dieser etwas passieren soll.

Von daher gilt: richtig programmieren und verstehen. Das erspart Zeit, Frust und Ärger.

Antwort
von SuperIch1998, 40

Am einfachsten ist es, die Form1 beim Starten an Form2 zu übergeben. Da würde ich einfach die Sub New() überschreiben und Form1 angeben.

Kommentar von Braendosch ,

Danke erstmal:) Leider komme ich noch nicht ganz mit wie du das meinst? Bin ziemlicher Anfänger?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten