Небольшая помощь с приложением таймера (пожалуйста) - PullRequest
0 голосов
/ 07 января 2011

Я занимаюсь в основном веб-вещанием, но я много играл с простым приложением в форме windws. Я хочу создать таймер, своего рода секундомер с кнопками запуска и остановки. Я понятия не имею, с чего начать, поэтому я погуглил примеры. Найден один, и спасибо оригинальному кодеру за то, что он им поделился, но я не могу заставить его работать Первоначально он был написан как консольное приложение, поэтому я хотел бы связать его с формой Windows.

Я начал с создания приложения для формы Windows, добавил метку и две кнопки в форму. Затем я переименовал program.cs в StopWatch.cs и вставил этот код. Создал метку и назначил метод, который возвращает часы текстовому свойству метки. Но это не работает - поэтому хотел бы, чтобы ваш комментарий о том, что я делаю неправильно. Смотрите код ниже. Спасибо - Ришо.

using System;
using System.Windows.Forms;

namespace StopWatch
{
    public class StopWatch
    {
        private DateTime startTime;
        private DateTime stopTime;
        private bool running = false;


        public void Start()
        {
            this.startTime = DateTime.Now;
            this.running = true;
        }


        public void Stop()
        {
            this.stopTime = DateTime.Now;
            this.running = false;
        }


        // elaspsed time in milliseconds
        public double GetElapsedTime()
        {
            TimeSpan interval;

            if (running)
                interval = DateTime.Now - startTime;
            else
                interval = stopTime - startTime;

            return interval.TotalMilliseconds;
        }


        // elaspsed time in seconds
        public double GetElapsedTimeSecs()
        {
            TimeSpan interval;

            if (running)
                interval = DateTime.Now - startTime;
            else
                interval = stopTime - startTime;

            return interval.TotalSeconds;
        }


        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        public static void Main(String[] args)
        {
            StopWatch s = new StopWatch();
            s.Start();

            s.Stop();

            Label lblTimer = new Label();

            lblTimer.Text = s.GetElapsedTime().ToString();

            Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Ответы [ 3 ]

2 голосов
/ 07 января 2011

Ваш класс секундомера в порядке.Однако ваш основной метод - не так.

Вам нужно поместить свою метку в форму Form1 и установить текст метки для события, такого как нажатие кнопки.

Вы можете выполнить следующие простые шаги -

  1. Перейти к представлению дизайна формы в Visual Studio
  2. Открыть панель инструментов и перетащить метку и элемент управления на форму
  3. В окне свойств введитеприсвойте имена элементам управления, отредактировав свойство Name
  4. , дважды щелкните кнопку в представлении конструктора, и вы перейдете к событию щелчка в представлении кода.
  5. установите текст метки в щелчкесобытие кнопки.

Я гуглил и нашел эти ресурсы хорошей отправной точкой для изучения winForms

http://www.google.co.in/#sclient=psy&hl=en&q=winforms+tutorials&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=98a02fd89f148227

1 голос
/ 07 января 2011

Мне кажется, что вы находитесь не в том файле, файл program.cs, который вы переименовали, создает форму и ничего больше. Вы хотите сделать свой код секундомера в самой форме. Файл form1.cs (кажется, так он называется).

0 голосов
/ 07 января 2011

Итак, что вы делаете, в основном переписываете System.Diagnostics.Stopwatch класс, верно?

Итак, что если вы переименуете класс секундомера в Program и удалите весь код в методе Main, за исключением следующих строк:

 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new Form1());

А потом, в вашем Form1 классе,

 using System.Diagnostics;

 public partial class Form1 : Form {

     Stopwatch s;

 ...

     private void btnStart_Click(object sender, EventArgs e)
     {
         if (s == null)
              s = new Stopwatch();

         s.Restart();
     }

     private void btnEnd_Click(object sender, EventArgs e)
     {
          if (s == null)
              return;

           s.Stop();

          lblElapsed.Text = s.Elapsed;
     }
 ...      

 } 

Для этого необходимо, чтобы в конструкторе было три вещи:

  • Две кнопки, называемые btnStart и btnEnd соответственно

  • Метка с именем lblElapsed.

btnStart и btnEnd должны иметь свои методы Click и подключить код соответственно.

Обратите внимание, что это не обновляет текст в ярлыке постоянно, оно обновляется только каждый раз, когда вы нажимаете кнопку остановки.

Надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...