Laden...

4 TextBoxen, 1 davon soll mit einem Wert befüllt werden. Auswahl d. TextBox soll zufällig sein!

Erstellt von Ted_TurnUp vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.373 Views
T
Ted_TurnUp Themenstarter:in
2 Beiträge seit 2018
vor 5 Jahren
4 TextBoxen, 1 davon soll mit einem Wert befüllt werden. Auswahl d. TextBox soll zufällig sein!

Hallo Leute !

Ich möchte eine von 4 TextBoxen mit einem Wert befüllen.

Diese eine TextBox soll zufällig ausgewählt werden.

Die Idee ist dass eine Rechnung in einem Feld angezeigt wird, und das Ergebnis
zufällig in einem der 4 Textboxen aufscheint.

Random rnd = new Random();
            int a = rnd.Next(1, 10);
            int b = rnd.Next(1, 10);
            int Ergebnis = a * b;
            int Zufallsbox = rnd.Next(1, 5);

und dann quasi (einfach ausgedrückt) TextBox+Zufallsbox = Ergebnis;

leider will er das nicht so banal... bzw. ich komme nicht darauf

Für Hilfe wäre ich sehr dankbar!
**
Vielen Dank im Voraus!!!!!!!!!!**

16.834 Beiträge seit 2008
vor 5 Jahren

Und was hast Du bisher probiert? Wo ist das Problem?

1.029 Beiträge seit 2010
vor 5 Jahren

Hi,

naja - die Vorgehensweise wäre ja folgende:
a) die 4 Textboxen in einer Liste sammeln (z.B. List<TextBox>)
b) Wert aus der Berechnungstextbox auslesen und versuchen diesen in einen int zu parsen
c) Irgendeine Rechnung ausführen und das Ergebnis zwischenspeichern
d) Mit Hilfe von Random einer der 4 Textboxen aus der in a) erstellten Liste aussuchen
e) Das Ergebnis an das Text-Property der gewünschten TextBox zuweisen

Versuch das mal in Code zu bauen - und wenn du dabei auf Probleme triffst - kannst du ja weiter fragen.

LG

3.170 Beiträge seit 2006
vor 5 Jahren

Hallo,

und dann quasi (einfach ausgedrückt) TextBox+Zufallsbox = Ergebnis;

siehe dazu auch [FAQ] Variablennamen zur Laufzeit zusammensetzen / Dynamisches Erzeugen von Controls

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

T
Ted_TurnUp Themenstarter:in
2 Beiträge seit 2018
vor 5 Jahren

So... danke nochmal für den Input...

Habe das mit der List Methode probiert

das Ganze sieht jetzt so aus:

List<string> txtbx = new List<string>();
            txtbx.Add(textBox1.Text);
            txtbx.Add(textBox2.Text);
            txtbx.Add(textBox3.Text);
            txtbx.Add(textBox4.Text);

            Random rnd = new Random();
            int a = rnd.Next(1, 10);
            int b = rnd.Next(1, 10);
            int Ergebnis = a * b;
            string myErgebnis = Convert.ToString(Ergebnis);
            int r = rnd.Next(txtbx.Count);
            txtbx[r] = myErgebnis;

Jetzt mein Problem:

wenn ich die TextBoxen vorher mit einem Wert befülle, und das mit einer MessageBox anzeigen lassen will, funktioniert das tadellos. Also er wählt zufällig eine Box aus und zeigt mir den Wert an.

MessageBox.Show((string)txtbx[r]);

jedoch in die andere Richtung, also dass er mir eine TextBox zufällig befüllt mit "myErgebnis" funktioniert nicht (wie oben im Code beschrieben).

Versteh halt nicht wieso es in die andere Richtung nicht funktioniert....

Grüße und Danke!

16.834 Beiträge seit 2008
vor 5 Jahren

Du kopierst den Inhalt einer TextBox und veränderst nur die Kopie. Nicht die TextBox.

Da fehlen Dir noch die Grundlagen von Wert- und Verweistypen

Du hast auch nicht wirklich befolgt, was in dem Link von MrSparke steht: Du musst die TextBox in der Liste führen und NICHT nur die Value der TextBox.


            List<TextBox > txtbx = new List<TextBox >();
            txtbx.Add(textBox1);
            txtbx.Add(textBox2);
            txtbx.Add(textBox3);
            txtbx.Add(textBox4);

Und jetzt mit der Referenz arbeiten.

PS: korrekte Anwendung von Random: [FAQ] Random.Next liefert eine Zeit lang die gleiche Zufallszahl - Warum? Wie geht es richtig?

3.003 Beiträge seit 2006
vor 5 Jahren

Weil die Liste eine Liste von Textbox sein soll, und Textbox nunmal ein Objekt ist, und kein string.


txtbx[r] = myErgebnis; //meeep
MessageBox.Show((string)txtbx[r]); //doppel-meeep

Um den Text abzufragen, der in einer Textbox gehalten wird, benutzt man die Property Text.

Außerdem ist deine Anwendung von Random falsch.

Zudem ist das hier völliger Humbug:


int a = rnd.Next(1, 10);
int b = rnd.Next(1, 10);
int Ergebnis = a * b;

Das liefert dir einfach eine Zufallszahl zwischen 1 und 100. Das kann man auch einfacher haben.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)