C# 以c形式更改numericupdown中的值

C# 以c形式更改numericupdown中的值,c#,winforms,forms,numericupdown,C#,Winforms,Forms,Numericupdown,问题是数字上下不能改变速度的快慢类型。基本上,它会加速值是正还是负,如果我把它恢复到零,它会崩溃。我现在正试图在滴答计数器的numericupdown中创建一个if循环 这是: namespace WindowsFormsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent();

问题是数字上下不能改变速度的快慢类型。基本上,它会加速值是正还是负,如果我把它恢复到零,它会崩溃。我现在正试图在滴答计数器的numericupdown中创建一个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; }
    }
}
我应该使用另一种类型的循环,还是我写错了?当我现在尝试更改值时,它只是崩溃了,而值根本没有更改


有人知道如何做到这一点吗?另外,如果我根本不想做任何更改,那么如果TickCount==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;
    }

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

感谢您对我的帖子masum7的回复和编辑。那是行不通的。它给出了一个错误,并表示:值“0”不是有效的间隔值。间隔必须大于0。参数名称:IntervalCan请完成您的评论。这样就更容易找出问题所在。对不起,我不小心按了enter键。谢谢你对我缺乏经验的耐心。好的,你可以修改最后一个块,如下所示,只需设置一些非零值。tPeriodic.Interval=1\因此,您可以尝试在else的最后一个块中设置一些非零值:tPeriodic.Interval=1值“0”不是Interval的有效值。间隔必须大于0。参数名称:IntervalI抱歉,我是编程和C的新手。我不知道如何提供stacktrace。