试图以c#中的形式更改计时器的输出

本文关键字:计时器 输出 | 更新日期: 2023-09-27 18:23:40

我需要在C#中制作一个表单,它有一个计时器,并有一个将显示计时器的标签。标签一开始需要是一个通用标签,表示它是一个计数器,但当计时器启动时,它需要显示计数。目前,我将显示为上下数字,但它需要是可以调整计数的控件,它确实做到了。它不可能是唯一的柜台。

这是我的任务:

创建Windows应用程序。在主窗体中,创建一个名为"lTickCount"的标签。创建一个名为"tPeriodic"的计时器,以及一个您自己选择的数字控件。每次计时器"滴答"递增一个整数时,将整数值显示为中的字符串lTickCount使用数字控制更改计时器的更新速率交互。

我认为我做的每件事都是对的,除了大胆的部分。最后,我试着在标签和计数器上加一根绳子。我知道我不应该两者都有,我只是想向你展示我试图帮助获得更好反馈的两件事:

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Text = "AAAAAAAA AAAAAAAA ########";
        }
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
            {
                TickCounter.Text = "The timer has started";
                tPeriodic.Enabled = true;
            }
            else
            {
                TickCounter.Text = "The timer has ended";
                tPeriodic.Enabled = false;
            }
        }
        private void TickCounter_ValueChanged(object sender, EventArgs e)
        {
            TickCounter.Text = TickCounter.Value.ToString();
        }
        private void tPeriodic_Tick(object sender, EventArgs e)
        {
            TickCounter.Value += 1;
        }
        private void label1_Click(object sender, EventArgs e)
        {
            TickCounter.Text = TickCounter.Value.ToString();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
    }
}

有人能帮我找出我做错了什么,并给我指明正确的方向吗?

试图以c#中的形式更改计时器的输出

如果要尝试添加到字符串(标签值),则需要首先将其转换为Integer。

有几种方法可以做到这一点:

TextCount.Text = (Convert.ToInt32(TextCount.Text) + 1).ToString();

是一种方法,当然你仍然可以使用你的+=或任何其他数学语法来进行+1的基本加法。

您也可以使用tryParse,事实上,这可能应该用于验证您首先有一个整数:

   int count;
   if (int.TryParse(TextCount.Text, out count))
        {
            count++;
            TextCount.Text = count.ToString();
        }
int count;
int tmrInterval = 1000; //1 sec
private void tPeriodic_Tick(object sender, EventArgs e)
{
    count++;
    lTickCount.Text = count.ToString();
}
private void TickCounter_ValueChanged(object sender, EventArgs e)
{
    if (TickCounter.Value == 0)
    {
        return; // or stop the timer
    }
    tPeriodic.Interval = TickCounter.Value * tmrInterval;
}

t周期性。Interval是到下一个刻度的时间(以毫秒为单位)。您正在根据tmrInterval和数字控件的值更新计时器间隔。你可以把我写的音程或公式改成你自己的。

valter

好的,我发现:

t周期间隔=1000/转换为Int32(TickCounter.Value*TickCounter.Value);

似乎在numericupdown类中起作用。

谢谢你的帮助。