Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

C# Zufallszahlen in label oder Textbox ausgeben bei Button Klick

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

Jetzt kommt mal wieder eine ziemliche Noob Frage aber ich finde keine Antwort sonst.

Es ist eigentlich ganz leicht ich bin C# Anfänger haben gerade damit erst angefangen und jetzt sollen wir / will ich einen kleinen Würfelsimulator machen.

Es gibt einen Button in der mitte wo man wenn man drauf klickt würfeln soll und rechts und links davon habe ich 2 labels gemacht für 2 zahlen die dann addiert werden und dann in einem 3 label ausgeben werden sollen.

C#-Code: 

void Button1Click(object sender, EventArgs e)

        {

            Random randNum = new Random();

            randNum.Next();


        }  

weiter wie so komm ich aber leider nicht. Ich hoffe auch wenn es nervt das er mir da weiterhelfen könnt bzw die ersten Tipps nennen könnt wie ich das ganze Anstelle bzw die Zahlen in den labels ausgebe.

Vielen lieben dank im vorraus

Nic

Ist ja erstmal ok. Mit

randNum.Next();

bekommst du eine Zufallszahl, die du einem Integer zuweisen musst... Also in etwa so:
int num = random.Next();
mit
int num = random.Next(1000);
kannst du noch bestimmen, dass die Zufallszahl kleiner als 1000 sein soll. 3. Alternative:
random.Next(min, max); 

Die Zalh, die du dort zurück bekommst, einfach in das Label schreiben.

soooo also ich hab jetzt

void Button1Click(object sender, EventArgs e)

		{

			Random RandomNum = new Random();

			int x = RandomNum.Next();



		}


		void Panel1Paint(object sender, PaintEventArgs e)

		{

					}

jetz muss ich doch nur noch die "x" in den Panel1 ausgeben oder ? Da komm ich aber nich drauf lol ich grig das nich hin ich weiss is jetzt wahrscheinlich voll nooby aber stehe ja noch ganz am anfang.

EDIT: ich glaub eine Zahl kann nicht in einem Panel ausgegeben werden ?

Bearbeitet von Cesareo

warum willst du das ganze denn in einem Panel ausgeben? Für solche Ausgaben sind Labels gedacht.

Ein Panel dient in erster Linie dazu, Steuerelemente zusammenzufassen

Oki ... hmm ich weiss auch nicht so recht

dennoch sagt er mir auch beim Label

Eine implizite Konvertierung vom Typ "int" in "System.Windows.Forms.Label" ist nicht möglich. (CS0029) -

Also irgendwas fehlt noch :)

.ToString() kann leben retten ;-)

beispiel:

int i = 3;

label1.Text = i.ToString();

Eine implizite Konvertierung vom Typ "int" in "System.Windows.Forms.Label" ist nicht möglich. (CS0029) -

Du kannst einen Integer-Wert auch nicht in ein Label konvertieren.

Probiers aber mal mit der Eigenschaft "Text" des Labels. :D

hmmm also muss es noch irgendwie konventiert werden ?

Weil ich möchte ja die gewürfelte zahl wenn man auf den button klickt

in den label ausgeben das er mir das anzeigt.

.ToString() kann leben retten ;-)

beispiel:

int i = 3;

label1.Text = i.ToString();

machs doch einfach so.....

Juhuuuu ... es würfelt und zeigt es mir :)

Ich habde zu danken :) *schwere geburt Hust* :D

EDIT:

wie kann man es aber ändern das beide würfel nich die selbe zahl würfeln ? lol

Bearbeitet von Cesareo

hmmm also muss es noch irgendwie konventiert werden ?

Generell: JA

int i = 3;

label1.Text = i.ToString();

Und so einfach ist die Konvertierung

Juhuuuu ... es würfelt und zeigt es mir :)

Ich habde zu danken :) *schwere geburt Hust* :D

EDIT:

wie kann man es aber ändern das beide würfel nich die selbe zahl würfeln ? lol

            Random bla = new Random();



            int i = bla.Next();

            int j = bla.Next();


            label1.Text = i.ToString();

            label2.Text = j.ToString();

sollte eigentlich funzen

ansonsten machste einfach

Random bla = new Random();

Random blub = new Random();

int i = bla.Next();

int j = blub.Next();

usw

void Button1Click(object sender, EventArgs e)

		{

			Random RandomNum1 = new Random();

			Random RandomNum2 = new Random();

			int x1 = RandomNum1.Next();

			int x2 = RandomNum2.Next();

			label1.Text = x1.ToString();

			label2.Text = x2.ToString();

		}

so siehts jetz aus ... ich hab jetz bei Next() keine zahl drin aber nur um zu testen aber wenn man dort zb "10" einträgt dann werden bei beidem würfeln imme rnur die selben zahlen generiert ... also gleichzeitig beide würfeln durchgehend das selbe ....

sry..

du darfst nur ein random haben

und halt mit next() jeweils dem naechsten int wert zuweisen

Random bla = new Random();

int i = bla.Next();

int j = bla.Next();

... ich hab jetz bei Next() keine zahl drin aber nur um zu testen aber wenn man dort zb "10" einträgt dann werden bei beidem würfeln imme rnur die selben zahlen generiert ... also gleichzeitig beide würfeln durchgehend das selbe ....

Erzeuge das Random Objekt ausserhalb des Eventhandlers. So bekommst du jedes mal beim Aufruf der Next Methode eine neue Zufallszahl.


public class Irgendwas

{

private Random random = new Random();


void Button1Click(object sender, EventArgs e)

		{

			label1.Text = random.Next().ToString();

			label2.Text = random.Next().ToString();

		}

}

Wenn du mit den Zahlen weiterarbeiten willst, kannst du die Zufallszahlen auch an eine Variable übergeben.

public class Irgendwas

{

private Random random = new Random();

private int zahl1;

private int zahl2;


void Button1Click(object sender, EventArgs e)

		{

			zahl1 = random.Next();

			zahl2 = random.Next();

			label1.Text = zahl1.ToString();

			label2.Text = zahl2.ToString();

		}

}

Variablen, die du innerhalb einer Methode definierst, sind lokal, d.h. sie sind nur innerhalb der Methode gültig.

Probier einfach mal ein wenig aus. Erzeuge dir doch mal eine Liste von Zufallszahlen, und vergleiche, ob sie bei jedem Programmaufruf gleich sind.

Ich danke sehr für eure Antworten und bis jetzt läuft der Genereator super

allerdings möchte ich jetzt gern noch was hinzufügen wo ich schon wieder ein bisschen feststecke.

Und zwar würde ich die generierten Zahlen gerne in eine Txt Datei abspeichern, wenn möcglich sogar das man über einen Menüpunkt "Log Speichern" dann den ORt der datei auswählen kann und dann halt speichern von allen generierten zahlen. Bis jetzt hab ich das hier als Code:

private void logSpeichernToolStripMenuItem_Click(object sender, EventArgs e)

        {

            /*SaveFileDialog fdlg = new SaveFileDialog();

            fdlg.Title = "Würfelgenerator LOG SAVE";

            fdlg.InitialDirectory = @"c:\";

            fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";

            fdlg.FilterIndex = 2;

            fdlg.RestoreDirectory = true;*/


            StreamWriter WStream = new StreamWriter("WuerfelLog.txt");

            File.Create(@"C:\******\test.txt");

            WStream.Write(z3);

            WStream.Close();
mit dem StreamWriter wollte ich eine Datei machen ohne den FileBrowser aber das haut auch nich so hin "z3" is die ergebniss zahl der würfel wenn sie zusammen gezählt werden. Mit:
public static void WriteAllText(

string "C://Test.txt"

string x1, x2;

)

bekomm ich das aber auch nicht hin. ICh bitte nochmals um hilfe :)

Dangöööö

Nic

Hol dir mittels des Dialogs einfach den vom User gewünschten Dateinamen.

Danach einfach mit einem BufferedWriter das Ganze in eine Text-Datei schreiben.

Hab jetzt leider keine IDE hier, aber mit dem Stichwort "BufferedWriter" solltest du genug finden

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.