Befehl nur einmal ausführen

Chrone

Mitglied
Hallo.

Ich habe das Problem dass es mir bei jedem klick auf einen Button eine neue Random zahl macht. Ich möchte aber, dass es mir die Randomzahl nur einmal macht, egal wie oft ich auf den Button klicke.

Hat jemand eine Idee, wie ich dieses Problem lösen kann?
 
Hallo.

Du könntest nach dem ersten Klick auf den Button diesen deaktivieren. Wenn aber dort noch Code drinnen ist der trotzdem ausgeführt werden soll, führe eine boolsche Variable ein die zuerst auf true ist, und dann nach dem ersten Klick auf false gesetzt wird.

Code:
	bool doRandom = true;
	public void ButtonClick(object sender, EventArgs ea)
	{
		if (doRandom)
		{
			GenerateRandomNumber();
			doRandom = false;
		}
		DoOtherStuff();
	}

MfG,
Alex
 
Hallo!

Habe es so versucht:
(das bool habe ich hier weggelassen)
Code:
if(doRandom)
{
Random rdm=new Random((int) DateTime.Now.Ticks);
doRandom = false;
}
Ich erhalte dann folgende Fehlermeldung:
Der Typ oder Namespace 'rdm' konnte nicht gefunden werden. Möglicherweise fehlt eine Anweisung oder ein Assemblyverweis.
 
So wie du das nun hast, ist das Random Objekt nur in der If-Anweisung verfügbar.

So würds bei dir auch gehen.

Code:
Random rdm;
...
private void ButtonCLick(..)
{
	if(rdm == null)
	{
		Random rdm=new Random((int) DateTime.Now.Ticks);
	}
	//...
}
 
hallo

Habe es probiert, doch jetzt erhalte ich eine neue Fehlermeldung:

(Random rdm; wurde weggelassen)
Code:
if(rdm==null)
			{
				Random rdm=new Random((int)DateTime.Now.Ticks);
			}
Die fehlermeldung verweist auf auf "rdm"

Eine lokale Variable 'rdm' kann in diesem Gültigkeitsbereich nicht deklariert werden, weil es 'rdm' eine andere Bedeutung geben würde, die bereits in einem 'übergeordnet oder aktuell'-Gültigkeitsbereich verwendet wurde, um auf etwas anderes hinzudeuten.
 
Du hast rdm wahrscheinlich global schon einmal definiert. In der if-Abfrage definierst du es erneut lokal.
Richtig wäre:

rdm=new Random((int) DateTime.Now.Ticks);

in deiner if-Abfrage, da rdm bereits global schon dem Compiler bekannt gemacht wurde.
 
Ich würde dir nen gutes Einführungsbuch empfehlen. Es kann ja sein das du zu dem, was du da tust (schulisch) gezwungen wirst, aber bestimmte Sachen musst du dir einfach draufschaffen, um zumindest zu erkennen was fremder Code bedeutet.

Code:
Random rdm = null;

private void Button_Click...
{
 if (rdm == null)
 {
  rdm = new Random();
 }
}
 

Neue Beiträge

Zurück