我主要做web内容,但我一直在玩一个简单的windws表单app。我想创建一个计时器,一个带有启动和停止按钮的排序秒表。我不知道如何开始所以我用Google搜索了一些例子。找到一个和kuddos给原始编码器分享它,但我不能让它工作。它最初是作为控制台应用程序编写的,所以我的选择是如何将它绑定到Windows窗体。
我开始创建一个Windows窗体应用程序,在表单中添加了一个标签和两个按钮。接下来,我将program.cs重命名为StopWatch.cs并粘贴此代码。创建了一个标签并指定了将时钟返回到标签文本属性的方法。但这不是工作 - 所以希望你评论我做错了什么。请参阅下面的代码。谢谢 - Risho。
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());
}
}
}
答案 0 :(得分:2)
你的秒表课很好。但是你的主要方法不是。
您需要将标签放在Form1上,并在事件上设置标签文本,例如单击按钮。
您可以按照以下简单步骤进行操作 -
我用Google搜索并发现这些资源是学习winForms的好起点
答案 1 :(得分:1)
在我看来,你在错误的文件中,你重命名的program.cs文件创建了表单而没有别的。你想在表单中做你的秒表代码。 form1.cs文件(我认为它被称为)。
答案 2 :(得分:0)
那么,你在做什么,基本上是重写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
方法,并分别插入代码。
请注意,这不会不断更新标签中的文字,只会在您每次点击停止按钮时更新。
我希望这会对你有所帮助。