Benutzer mit den meisten Antworten
C# Timer mit Button starten funktioniert nicht!

Frage
-
Ich habe einen Code geschrieben und beim Klick eines Buttons soll ein Timer gestartet, dessen Intervall vorher vom Benutzer, über eine Textbox, festgelegt wird.
private void Form1_Load(object sender, EventArgs e) { this.ShowInTaskbar = true; toolTip1.SetToolTip(this.textBox1, "Geben Sie die gewünschte Zeit in Millisekunden (ms) ein."); } private void button1_Click(object sender, EventArgs e) { timer1.Interval = intervall; timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { Wallpaper one = new Wallpaper(); one.SetWallpaper(@"C:\Users\zony\Pictures\Hintergründe unso\02209_stratosphere_1680x1050.jpg", Wallpaper.Style.Stretched); timer2.Interval = intervall; timer2.Enabled = true; timer1.Enabled = false; }
Hier noch das speichern der Zeit (in ms):
int intervall = new int(); private void textBox1_TextChanged(object sender, EventArgs e) { Convert.ToInt32(intervall); }
Leider bin ich noch sehr unerfahren was das Programmieren angeht. Deshalb bitte ich um Verständnis bei mehr oder weniger dummen Fragen! ;)
Antworten
-
Ich denke, du willst eher folgendes:
int intervall; private void textBox1_TextChanged(object sender, EventArgs e) { intervall = int.Parse(textBox1.Text); }
MVP Data Platform Development My blog
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 17. Oktober 2012 17:21
-
Hallo,
Convert.ToInt32() konertiert bspws. einen string in eine Zahl. Die Zahl wird dann zurückgegeben. Also müsste dein Code lauten:
int intervall = new int(); private void textBox1_TextChanged(object sender, EventArgs e) { interval = Convert.ToInt32(((TextBox)sender).Text); }
Wobei ich eher int.TryParse nehmen würde:
private void textBox1_TextChanged(object sender, EventArgs e) { int i = 0; if(int.TryParse(((TextBox)sender).Text), out i) interval = i; else MessageBox("Bitte geben Sie eine gültige Zahl ein."); }
Da bekommt der Benutzer eine Rückmeldung, wenn es keine richtige Zahl ist.
Wobei ich folgendes nicht so ganz verstehe:private void timer1_Tick(object sender, EventArgs e) { Wallpaper one = new Wallpaper(); one.SetWallpaper(@"C:\Users\zony\Pictures\Hintergründe unso\02209_stratosphere_1680x1050.jpg", Wallpaper.Style.Stretched); timer2.Interval = intervall; timer2.Enabled = true; timer1.Enabled = false; //Das hier }
wieso hälst du den Timer nach dem ersten Tick wieder an? Wenn alles nur einmal durchlaufen soll könntest du ja auch einen Backgroundworker nehmen.
Verständnis bei mehr oder weniger dummen Fragen ;)
>Es gibt keine dummen Fragen, nur dumme Antworten ;)
und so habe ich und wohl auch jeder andere hier auchmal angefangen.Koopakiller - http://koopakiller.ko.ohost.de/
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 17. Oktober 2012 17:20
Alle Antworten
-
Ich denke, du willst eher folgendes:
int intervall; private void textBox1_TextChanged(object sender, EventArgs e) { intervall = int.Parse(textBox1.Text); }
MVP Data Platform Development My blog
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 17. Oktober 2012 17:21
-
Hallo,
Convert.ToInt32() konertiert bspws. einen string in eine Zahl. Die Zahl wird dann zurückgegeben. Also müsste dein Code lauten:
int intervall = new int(); private void textBox1_TextChanged(object sender, EventArgs e) { interval = Convert.ToInt32(((TextBox)sender).Text); }
Wobei ich eher int.TryParse nehmen würde:
private void textBox1_TextChanged(object sender, EventArgs e) { int i = 0; if(int.TryParse(((TextBox)sender).Text), out i) interval = i; else MessageBox("Bitte geben Sie eine gültige Zahl ein."); }
Da bekommt der Benutzer eine Rückmeldung, wenn es keine richtige Zahl ist.
Wobei ich folgendes nicht so ganz verstehe:private void timer1_Tick(object sender, EventArgs e) { Wallpaper one = new Wallpaper(); one.SetWallpaper(@"C:\Users\zony\Pictures\Hintergründe unso\02209_stratosphere_1680x1050.jpg", Wallpaper.Style.Stretched); timer2.Interval = intervall; timer2.Enabled = true; timer1.Enabled = false; //Das hier }
wieso hälst du den Timer nach dem ersten Tick wieder an? Wenn alles nur einmal durchlaufen soll könntest du ja auch einen Backgroundworker nehmen.
Verständnis bei mehr oder weniger dummen Fragen ;)
>Es gibt keine dummen Fragen, nur dumme Antworten ;)
und so habe ich und wohl auch jeder andere hier auchmal angefangen.Koopakiller - http://koopakiller.ko.ohost.de/
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 17. Oktober 2012 17:20
-
Erstmal danke für die Antworten! :)
private void timer1_Tick(object sender, EventArgs e) { Wallpaper one = new Wallpaper(); one.SetWallpaper(@"C:\Users\zony\Pictures\Hintergründe unso\02209_stratosphere_1680x1050.jpg", Wallpaper.Style.Stretched); timer2.Interval = intervall; timer2.Enabled = true; timer1.Enabled = false; //Das hier }
Es sind mehrere Timer die immer wieder durchlaufen werden sollen. Ist im Prinzip eine Endlosschleife. Die timer sollen nicht durchgehend laufen. Aber es soll immerwieder durchlaufen werden. Ich bin mir zwar sicher das es dafür eine viel bessere Lösung gibt, aber das reicht erstmal ;) Das Programm ist sowieso nur für private Zwecke ^^