C# C创建一个定时器,在特定的值改变标签
我是C语言的新手,我已经搜索过了,但没有找到一个简单的解决方案。 我正在创建一个Windows窗体应用程序。 单击“开始”按钮后,它每毫秒计数一次,当它达到数组中的特定值时,会更改标签。 如何计算毫秒数 ------------- AlekZanDer代码:C# C创建一个定时器,在特定的值改变标签,c#,time,timer,counter,elapsed,C#,Time,Timer,Counter,Elapsed,我是C语言的新手,我已经搜索过了,但没有找到一个简单的解决方案。 我正在创建一个Windows窗体应用程序。 单击“开始”按钮后,它每毫秒计数一次,当它达到数组中的特定值时,会更改标签。 如何计算毫秒数 ------------- AlekZanDer代码: namespace timer_simple3 { public partial class Form1 : Form { long result = 0; public Fo
namespace timer_simple3
{
public partial class Form1 : Form
{
long result = 0;
public Form1()
{
InitializeComponent();
this.timer1 = new System.Windows.Forms.Timer(this.components);
}
private void Form1_Load(object sender, EventArgs e)
{
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
}
private void timer1_Tick(object sender, EventArgs e)
{
result = result + 1;
label1.Text = Convert.ToString(result);
}
private void btstart_Click(object sender, EventArgs e)
{
timer1.Interval = 1; //you can also set this in the
//properties tab
timer1.Enabled = true;
timer1.Start();
// label1.Text = Convert.ToString(timer1);
}
private void btstop_Click(object sender, EventArgs e)
{
timer1.Stop();
}
}
}
首先,您必须创建一个方法,告诉计时器每[在此处输入所需的数字]毫秒要做什么
private void randomTimer_Tick(object sender, EventArgs e)
{
if (conditions)
{
... //stuff to do
... //more stuff to do
... //even more stuff to do
}
}
然后将计时器设置为调用此方法:可以使用计时器属性的“事件”选项卡或“写入”:
this.randomTimer1.Tick += new System.EventHandler(this.randomTimer1_Tick);
在private void InitializeComponent{}方法的ProjectName.Designer.cs文件中,在this.randomTimer=new System.Windows.Forms.Timerthis.components;行之后
最后,启用计时器:
private void startButton (object sender, EventArgs e)
{
randomTimer.Interval = timeInMilliseconds; //you can also set this in the
//properties tab
randomTimer.Enabled = true;
}
当然,您也必须设置按钮来调用此方法
如果您不知道属性窗口在哪里,我假设您使用的是Visual C:它通常是位于窗口右侧的选项卡。为了在选项卡中显示某些内容,必须在设计视图中选择要编辑的表单。如果编译器窗口中没有这样的选项卡,请转到“查看->其他窗口”并选择“属性窗口”
如果你找到的答案既长又复杂,那主要是因为他们用细节和例子解释了整个过程。如果您使用Visual C的拖放选项,表单的声明代码将自动生成,然后由您编写方法的代码。还有其他一些特性是不言自明的,它们使编程更加愉快。使用它们
如何计算毫秒数
您不能这样做,因为它是单线程的,并且精度限制为55毫秒。如果需要精度更高的多线程计时器,请使用System.Timers命名空间中的timer类
另外,任何其他计时器的精度都不会超过16毫秒,实际上是15.625毫秒,或64Hz。因此,您不能增加一些计数器来计算经过的毫秒数
private void randomTimer_Tick(object sender, EventArgs e)
{
if (conditions)
{
... //stuff to do
... //more stuff to do
... //even more stuff to do
}
}
选项-使用当前时间和计时器启动时间之间的差值,而不是长结果计数器:
label1.Text = (DateTime.Now - startDateTime).Milliseconds.ToString();
一年后。这个故事继续…问题是什么?大量的研究,但我打赌你不需要2页,充满复杂的代码行来做这件事。至少发布一些你已经尝试过的代码,我们可以帮你解决你面临的具体问题结果不是毫秒我不明白你说的是什么意思滴答声应该每毫秒发生一次?如果是,那么就没有发生。每次调用该方法之间的间隔可以任意长。如何将其设置为1毫秒?顺便说一句,如果确实需要使用增量计数器,可以使用非托管媒体计时器,如下所示