2015-06-27 6 views
2

Вот что у меня есть, почему мой таймер (и) не останавливается? Я не уверен, что я делаю неправильно. Я довольно новичок в C#, и я пытаюсь сделать так, чтобы мой экран заставки скрывался (form1), и моя программа запускается (samptool), однако моя программа запускается, но заставка остается и таймеры перезагружаются, а не останавливаются. Каждые 6,5 секунд приложение открывается в новом окне.C# Таймер не останавливается?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Timers; 
namespace SplashScreen.cs 
{ 
    public partial class Form1 : Form 
    { 

     public Form1() 
     { 
      InitializeComponent(); 
      timer1.Interval = 250; 
      timer2.Interval = 6500; 
      timer1.Start(); 
      timer2.Start(); 
     } 

     private void pictureBox1_Click(object sender, EventArgs e) 
     { 

     } 

     private void timer1_Tick(object sender, EventArgs e) 
     { 
      this.progressBar1.Increment(5); 
     } 

     private void timer2_Tick(object sender, EventArgs e) 
     { 
      SampTool w = new SampTool(); 
      Form1 m = new Form1(); 
      timer1.Enabled = false; 
      timer1.Stop(); 
      timer2.Enabled = false; 
      timer2.Stop(); 
      m.Hide(); 
      w.Show(); 
     } 
    } 
} 

ответ

7

При использовании new ключевого слова, вы создаете новый экземпляр класса:

Form1 m = new Form1(); 

При создании нового экземпляра, то constructor вызывается (конструктор является методом, который называется то же, что и класс).
Это снова запустит весь код в конструкторе, создав тем самым новые таймеры.

Чтобы закрыть текущую форму, вы должны просто запустить формы Hide метода:

private void timer2_Tick(object sender, EventArgs e) 
{ 
    timer1.Stop(); 
    timer2.Stop(); 
    SampTool sampTool = new SampTool(); 
    sampTool.Show(); 

    Hide(); // call the Forms Hide function. 
} 
Смежные вопросы