在c#表单中更改numericupdown中的值

时间:2014-09-22 00:55:04

标签: c# winforms forms numericupdown

问题在于,数字注释不会改变快速和慢速的速度类型。基本上它会加速价值是正还是负,如果我把它恢复到零,它会崩溃。我现在正试图在TickCounter的数字注册中创建一个if循环。

这是:

namespace WindowsFormsApplication3
{          
    public partial class Form1 : Form
    {   
        public Form1()
        {
            InitializeComponent();
            this.Text = "AAAAAAA AAAAAAA #########";            
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
            {
                TickCounterLabel.Text = "The timer has started";
                tPeriodic.Enabled = true;
            }
            else
            {
                TickCounterLabel.Text = "The timer has ended";
                tPeriodic.Enabled = false;
            }
        }

        private void TickCounter_ValueChanged(object sender, EventArgs e)
        {
            **TickCounter.Value = TickCount;
            if (TickCount >= 0)
                tPeriodic.Interval = 1000 / Convert.ToInt32(TickCounter.Value * TickCounter.Value);
            else if (TickCount <= 0)
                tPeriodic.Interval = 1000 * Convert.ToInt32(TickCounter.Value * TickCounter.Value);
            else if (TickCount == 0)
                tPeriodic.Interval = Convert.ToInt32(TickCounter.Value * TickCounter.Value);**                          
        }

        private void tPeriodic_Tick(object sender, EventArgs e)
        {          
            tickCount += 1;
            lTickCount.Text = tickCount.ToString();
        }

        private void label1_Click(object sender, EventArgs e)
        {
        }

        private void Form1_Load(object sender, EventArgs e)
        {        
        }

        public int tickCount { get; set; }

        public int X { get; set; }

        private void TickCounterLabel_Click(object sender, EventArgs e)
        {        
        }

        public int TickCount { get; set; }
    }
}

我应该使用其他类型的循环还是我只是写错了?当我尝试更改值时,它只会崩溃而且根本不会改变。

有谁知道如何实现这一目标?另外,如果我不想有任何改变,那么if(TickCount == 0)是否会有所不同?

1 个答案:

答案 0 :(得分:0)

我想这是因为除以零。 在“TickCounter_ValueChanged”的代码中,对于TickCount = 0,它只是进入第一个“if”块并将导致异常。

您需要以正确的方式使用“if-else”条件。

    private void TickCounter_ValueChanged(object sender, EventArgs e)
    {
        if (TickCounter.Value > 0)
            tPeriodic.Interval = 1000 / Convert.ToInt32(TickCounter.Value * TickCounter.Value);

        else if (TickCounter.Value < 0)
            tPeriodic.Interval = 1000 * Convert.ToInt32(TickCounter.Value * TickCounter.Value);

        else
            tPeriodic.Interval = 1000;
    }

请告诉我是否能解决您的问题。