Random Wort, Random Colorfont und Fontsize verbinden
-
sorry aber ich versteh nur bahnhof. Das der Timer in der Toolbox ist weiß ich, aber wie ich ihn zum auslesen des numericupdown werts bringe, weiß ich nicht.
-
Zieh mal den Timer auf die Form. Klappt das?
Dann schaust Du im Eigenschaften/Eventfenster nach dem "Tick"-Event und implementierst es. Einfach zweimal clicken im Designer. Mit Events bist Du vertraut, oder?
-
Oder nur in Code:
http://www.hinzberg.net/winforms/winformstimer/Google ist dein Freund
-
µ schrieb:
Zieh mal den Timer auf die Form. Klappt das?
Dann schaust Du im Eigenschaften/Eventfenster nach dem "Tick"-Event und implementierst es. Einfach zweimal clicken im Designer. Mit Events bist Du vertraut, oder?
Timer draufziehen kein Thema. Ja größtenteils Events kann ich ja. Ich probiers mal, muss grade erstmal alle Farbbuttons zuweisen
-
so jetzt hänge ich.
numericUpDown1.Enabled = false; button1.Enabled = false; System.Windows.Forms.Timer formsTimer = new System.Windows.Forms.Timer(); formsTimer.Interval = 1000; formsTimer.Enabled = true;
wie kriege ich jetzt hin, dass der Timer die Zahl aus der NumericUpDown ausließt?
-
Der Timer ruft in dem von dir angegebenen Intervall das Tick-Event auf.
formsTimer.Tick += new EventHandler(TimerEvent); private void TimerEvent(Object myObject, EventArgs myEventArgs) { //hier numericupdown-value auslesen und verarbeiten }
Den Event-Handler (TimerEvent) implementierst Du wie jede andere Methode auch. Der einzige Unterschied ist eben die automatische und periodische Ausführung durch den Timer.
Die Referenz auf das Timer-Objekt sollte NICHT lokal in einer Methode (z.B. in einem Eventhandler eines Controls) existieren. Sonst kommt der Garbage-Collector und kassiert den Timer ein. Die Timer-Referenz sollte einfach ein Feld der Form-Klasse sein.
-
danke, aber ich weiß ja eben nicht, wie ich den numericupdown auslese und verarbeite, den rest weiß ich ja
trotzdem danke.
-
Na einfach numericUpDown1.Value verwenden.
Das ist glaube ich ein decimal. Also entsprechend in ein int oder so casten, je nachdem was du brauchst.
-
ich versuchs mal. einen moment.
-
klappt nicht so wie ich will. Der Timer soll ja nur ausgeführt werden, wenn button1 (Play) betätigt wird. Ich bin grade etwas verwirrt..
-
Zeig mal deinen Code.
-
public Form1() { InitializeComponent(); englishToolStripMenuItem.Checked = true; label1.Text = "Waiting for Play!"; label2.Text = "Playtime: "; System.Windows.Forms.Timer formsTimer = new System.Windows.Forms.Timer(); formsTimer.Interval = 1000; formsTimer.Enabled = true; formsTimer.Tick += new EventHandler(TimerEvent); }
und jetzt weiß ich nicht, wie ich da bei Button1_Click drauf zugreifen soll.
-
Was soll beim Button-click genau passieren?
-
private void button1_Click(object sender, EventArgs e) { if (germanToolStripMenuItem.Checked == true) { string[] strCollection = { "blau", "braun", "gelb", "lila", "orange", "pink", "rot", "grau", "grün" }; System.Random rnd = new Random(); FontFamily myFontFamily = new FontFamily("Modern No. 20"); Font myFont = new System.Drawing.Font(myFontFamily, 16, FontStyle.Bold, GraphicsUnit.Pixel); label1.Location = new Point(175, 50); label1.Font = myFont; label1.Text = strCollection[rnd.Next(strCollection.Length)]; label1.BackColor = farben.RandomColor(); } else { string[] strCollection = { "blue", "brown", "yellow", "purple", "orange", "pink", "red", "grew", "green" }; System.Random rnd = new Random(); FontFamily myFontFamily = new FontFamily("Modern No. 20"); Font myFont = new System.Drawing.Font(myFontFamily, 16, FontStyle.Bold, GraphicsUnit.Pixel); label1.Location = new Point(175, 50); label1.Font = myFont; label1.Text = strCollection[rnd.Next(strCollection.Length)]; label1.BackColor = farben.RandomColor(); } numericUpDown1.Enabled = false; button1.Enabled = false; }
und dann soll halt noch der timer starten (eben die Spielzeit, die eingegeben wurde in der numericupdown)
-
//Als Feld wegen dem Garbage-Collector System.Windows.Forms.Timer formsTimer public Form1() { InitializeComponent(); englishToolStripMenuItem.Checked = true; label1.Text = "Waiting for Play!"; label2.Text = "Playtime: "; formsTimer = new System.Windows.Forms.Timer(); //formsTimer.Interval = 1000; //hier startest du den timer. das ist wohl so nicht gewollt. //formsTimer.Enabled = true; formsTimer.Tick += new EventHandler(TimerEvent); } private void button1_Click(object sender, EventArgs e) { //evtl (int) cast notwendig. weiß gerade den typ von Interval nicht formsTimer.Interval = numericUpDown1.Value formsTimer.Enabled = true } private void TimerEvent(Object myObject, EventArgs myEventArgs) { //quizzfrage: was passiert hier? }
-
ja ist vom typ int. ja die quizfrage ist echt gut, ich habe mal sowas von keinen plan..
-
Hahaha....
Das musst schon du wissen.
Soll der Wert vom numericupdown runtergezählt werden?
-
ja soll sie. wird wohl über ne schleife laufen oder?
-
Nein keine Schleife. Du hast ja einen Timer der im Sekundentakt runterzählt.
System.Windows.Forms.Timer formsTimer int startSeconds; public Form1() { } private void button1_Click(object sender, EventArgs e) { //wahrscheinlich wolltest du sowas: formsTimer.Interval = 1000; startSeconds = (int)numericUpDown1.Value + 1; formsTimer.Enabled = true } private void TimerEvent(Object myObject, EventArgs myEventArgs) { numericUpDown1.Value = --startSeconds; if(startSeconds == 0) { formsTimer.Enabled = false //weitere aktionen nach timer-ende } }
-
ich bau mal eben aus was danach passiert und dann teste ich mal. Danke schonmal