Frage von xXenniXx, 14

Wie gibt man Benutzereingaben (Speicher) in Windows Forms an das nächste Formular weiter?

Hallo,

ich programmiere in der Schule grade was mit Windows Forms in C# und habe eine Frage.

Frage: Wie(mit welchem Code) kann ich Benutzereingaben in Form von Zahlen an die nächste Form weitergeben? Ich hab 6 Formen und in jeder soll der Benutzer was eingeben (in einer MaskedTextBox) was in einem Array gespeichert wird (Datentyp: Double). Am ende möchte ich mit diesen Eingaben auf der 6. Form was berechnen und ausgeben.

Danke im Voraus :)

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von CrystalixXx, 14

Es gibt da zwei einfache/sinnvolle Möglichkeiten im Sinne der objektorientierten Programmierung.

1. Möglichkeit: Events

In deiner Form mit den Benutzereingaben stellst du Ereignisse mit Parameter zur Verfügung, die die Benutzereingabe als Wert enthalten. Wird der Wert geändert, löst du das Ereignis aus. In deiner Hauptform kannst du diese Ereignisse abfangen und kommst über die Parameter an die Benutzereingaben.

2. Möglichkeit: Eigenschaften

Du definierst in deiner Form mit Benutzereingaben jeweils eine Eigenschaft, die eine Benutzereingabe zurückgibt.

Public ReadOnly Property Eingabe1 As String
Get
Return TextBox1.Text
End Get
End Property

In deiner Hauptform rufst du die Eigenschaft ab und erhälst so den eingegebenen Wert.

Kommentar von CrystalixXx ,

Die zweite Möglichkeit gefällt mir besser. Ein kurzes Beispiel:

Sei Form1 deine Hauptform, die die Daten anzeigen soll und Form2 deine Form, die die Benutzereingaben abfragt. Dann sieht Form2 so aus:

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

public string Eingabe1
{
get { return textBox1.Text; }
}
}

Diese Form besitzt eine TextBox1, in welcher der Benutzer eine Eingabe tätigen kann. Über die Eigenschaft "Eingabe1" wird dieser Eingabewert nach außen hin zugreifbar gemacht.

Anschließend muss deine Form1 eine Instanz von Form2 anlegen, anzeigen und den Rückgabewert abfragen (denn die Werte sollen nur dann angezeigt werden, wenn der Benutzer auf OK drückt und nicht, wenn er auf Abbrechen drückt). Das sieht dann so aus:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
using (Form2 frm = new Form2())
{
if (frm.ShowDialog() == DialogResult.OK)
{
textBox1.Text = frm.Eingabe1;
}
}
}
}

In der Form1 hast du natürlich auch eine TextBox, die den in der zweiten Form eingegebenen Text anzeigt.

So in etwa könnte es dann auch bei dir aussehen - nur eben mit mehr Eigenschaften für die unterschiedlichen Benutzereingaben.

Antwort
von KnorxyThieus, 11

Hm, ich würde eine statische Funktion in den Formen schreiben, die quasi "Execute" heißt und alle möglichen Parameter entgegennimmt, die eingetragen werden sollen, dann eine Instanz erstellt, wartet, bis sie geschlossen ist und dann die entsprechenden Parameter in z. B. einem Tuple zurückgibt.

Dann schreibst du unter Main() nur noch den Aufruf aller 6 Funktionen mit jeweils den Eingabeparametern der Rückgabe der letzten Funktion ... :-)

Antwort
von xXenniXx, 6

Danke schonmal für die Antworten aber ich bin Anfänger :). Ein konkreter Code wäre nice mit Klammern und so.

Kommentar von CrystalixXx ,

Ich habe in meiner Antwort ein Codebeispiel angefügt. Schau's dir mal an.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten