2014-12-19 7 views
0

Я работаю над проектом C#, и я хочу изменить местоположение стрелки, нажав клавишу ENTER с различным размером итерации для разных вариантов comboBox. На самом деле это работает, но проблема в том, что я не могу обновить форму до изменения выбора comboBox. Я хочу видеть итерацию шаг за шагом, но она движется, если я изменю выбор comboBox. Вот код:Измените местоположение стрелки, нажав клавишу ENTER

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 


      if (comboBox1.SelectedIndex == 0) 
      { 

       this.BackColor = Color.Black; 
       label1.ForeColor = Color.Silver; 
       label1.Text = "Environment is Space"; 
       pictureBox2.Image = list.Images[4]; 
       t = 100; // iteration amount 

      } 

      else if (comboBox1.SelectedIndex == 1) 
      { 
       this.BackColor = Color.PaleTurquoise; 
       label1.Text = "Environment is Water"; 
       pictureBox2.Image = list.Images[3]; 
       t = 50; // iteration amount 

      } 

      else if (comboBox1.SelectedIndex == 2) 
      { 
       this.BackColor = Color.DarkGoldenrod; 
       label1.ForeColor = Color.Firebrick; 
       label1.Text = "Environment is Honey"; 
       pictureBox2.Image = list.Images[2]; 
       t = 20; // iteration amount 
      } 

     } 

     private void Form1_Paint(object sender, PaintEventArgs e) 
     { 

      // Drawing arrow 
      Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255), 8); 
      pen.StartCap = LineCap.ArrowAnchor; 
      pen.EndCap = LineCap.RoundAnchor; 
      e.Graphics.DrawLine(pen, x+50, 200, x, 200); 

     } 

     private void Form1_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      // pressed Enter => change x 
      if (e.KeyChar == (char)Keys.Return) 
      { 
       e.Handled = true; 
       if (x < y) 
       { 
        x += t; 

       } 
      } 
     } 

Чтобы быть более ясным: Я хочу люблю: Нажать на> Enter + MOVE-> Стрелка + Нажать на> Enter + Move -> Стрелка
Сейчас она работает, как: Нажать на > Enter + Change-> comboBox + Move-> Arrow

Спасибо большое!

+0

Массив - это логическая структура данных, я не уверен, как вы ее перемещаете. Можете ли вы представить полный компилируемый пример, поскольку ваше описание не очень ясное. –

+0

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

ответ

0

Вы хотите решение для таймера?

System.Timers.Timer timer = new System.Timers.Timer(500); 
     timer.Elapsed += (s, e) => { 
      this.Invoke((MethodInvoker)delegate { comboBox1.SelectedIndex = (comboBox1.SelectedIndex + 1) % comboBox1.Items.Count; }); 
     }; 
     timer.Start(); 

Трудно понять, что вы имеете в виду.

+0

Нет, я хочу видеть шаг за шагом. Я не хочу видеть все изменения после изменения выбора comboBox. Все, что я хочу, - это щелкнуть -> Ввести + Переместить -> Стрелка + Клик -> Ввести + Переместить -> Стрелка. Тем не менее, он действует как Click-> Enter + Change-> comboBox + Move-> Arrow прямо сейчас. – SYG

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