2014-09-22 8 views
0

Проблема в том, что числовое значение не изменяет скорости для быстрого и медленного. В основном это ускорит, будет ли значение положительным или отрицательным, и если я верну его обратно к нулю, он сработает. Теперь я пытаюсь сделать цикл if внутри numericupdown для TickCounter.Изменение значения в numericupdown в C# form

Здесь:

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), если я вообще не хочу иметь никаких изменений?

+0

Если вы получаете исключение, когда оно выходит из строя, опубликуйте трассировку исключения и стека и укажите, какая именно линия фактически выполняет бросок. –

+0

Значение «0» не является допустимым значением для интервала. Интервал должен быть больше 0. Имя параметра: Интервал – grapherson

+0

Прошу прощения, я новичок в программировании и на C#. Я не знаю, как обеспечить стек. – grapherson

ответ

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; 
    } 

Пожалуйста, дайте мне знать, решите ли вы свою проблему.

+0

Спасибо за ответ и редактирование моего сообщения masum7. Это не сработало. Он дал ошибку и сказал: Значение «0» не является допустимым значением для Interval. Интервал должен быть больше 0. Имя параметра: Интервал – grapherson

+0

Не могли бы вы прокомментировать свой комментарий. Тогда было бы легче определить, в чем проблема. – masum7

+0

Извините, я случайно попал в enter. Спасибо за терпение моей неопытности. – grapherson