2015-11-17 2 views
0

Я использую WinForms. В моей форме у меня есть панель и кнопка.Панель Move Everytime on Button Нажмите

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

Проблема: Проблема, с которой я в настоящее время сталкиваюсь, заключается в том, что панель перемещается только один раз.

private void Button_Up_Click(object sender, EventArgs e) 
    { 
     if (panel1.Location.Y != 250) 
     { 
      while (panel1.Location.Y > 250) 
      { 
       panel1.Location = new Point(panel1.Location.X, panel1.Location.Y - 80); 

      } 
     } 

     else 
     { 
      if (panel1.Location.Y < 1000) 
      { 
       while (panel1.Location.Y > 10) 
       { 
        panel1.Location = new Point(panel1.Location.X, panel1.Location.Y - 80); 

       } 
      } 
     } 

    } 

enter image description here

+1

Ваши циклы while будут перемещать панель, пока она не удовлетворит ваше состояние. – LarsTech

ответ

1

Второй while заставляет его двигаться столько, сколько это возможно.

Последующие щелчки обнаружат, что panel1.Location.Y уже < = до 10, чтобы они не обновляли свое местоположение.

Вам это не нужно while.

+0

Я удалил второй пока, но панель все еще перемещается только один раз. – taji01

+0

Я вижу, что вы имеете в виду спасибо! – taji01

1

Вы отлаживали свой код? Согласно вашему коду, он переходит в конечное место, где выполняется условие. После этого каждый раз он вводит первое «если», так как значение не равно 250 (но меньше), поэтому else игнорируется и ничего не происходит.

Вы, вероятно, хотите только 1 проверить, если Y не меньше высоты панели, чем на 80 вверх по вашим значениям.

Смежные вопросы