Запустите цифровые часы на вашем WinForm - PullRequest
6 голосов
/ 30 декабря 2011

Привет! Мне нужно создать форму Windows, которая имеет простое текстовое поле. Текстовое поле содержит текст, подобный таймеру (формат 00:00).

Я хочу обновлять страницу каждую секунду и соответственно изменять содержимое текстового поля. (Так же, как цифровые часы, работающие, скажем, один час!).

Я понял, что мне нужно использовать класс System.Windows.Forms.Timer, и я сбросил элемент Timer из панели инструментов в мою форму.

Что дальше ... Нужно ли использовать функцию Thread.Sleep(1000) ... есть идеи?

Вот код, который я пробовал. Я знаю, где в программе происходит что-то не так, и часть thread.sleep() даже ухудшает выполнение моего кода. Я пробовал материал Timer в ToolBox, но не смог пройти. (Когда я запускаю код, он успешно компилируется, а затем приложение зависает на один час из-за грязных циклов For-Loops) Помощь !!

  public  partial class Form1 : Form
{
    Button b = new Button();
    TextBox tb = new TextBox();
    //System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer();

    public Form1()
    {
        b.Click += new EventHandler(b_click);
        b.Text = "START";
        tb.Text = "00 : 00";
        //timer1.Enabled = true;
        //timer1.Interval = 1000;
        tb.Location = new Point(100, 100);
        this.Controls.Add(tb);
        this.Controls.Add(b);
        InitializeComponent();
    }

    private void refreshTimer_Tick()
    {

       for (int i = 0; i < 60; i++)
        {
            for (int j = 0; j < 60; j++)
            {
                Thread.Sleep(500);
                string TempTime = string.Format("{0:00} : {1:00}",i,j);
                tb.Text = TempTime;                    
                Thread.Sleep(500);

            }
        }
    }
    public void b_click(object sender, EventArgs e)
    {
        refreshTimer_Tick();

    }
}

1 Ответ

18 голосов
/ 30 декабря 2011

Установите таймер и период обновления.(1 секунда)

timer1.Enabled = true;
timer1.Interval = 1000;

Затем вам нужно реализовать то, что вы хотите, чтобы таймер делал каждую 1 секунду:

private void timer1_Tick(object sender, EventArgs e)
{
    DigiClockTextBox.Text = DateTime.Now.TimeOfDay.ToString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...