2014-10-01 3 views
0

У меня есть функция, где я проверяю, есть ли буква в игре с word-hangman. Если это не так, я увеличиваю ошибку на 1. То, что происходит, зависит от ошибки.C# Функция рисования циклическая

Моя первая проблема заключается в том, что когда ошибка становится равной 1, функция становится замкнутой (я создал почтовый ящик только для теста, и ящик сообщений постоянно появляется).

Моя вторая проблема заключается в том, что ничего не нарисовано. У меня есть этот код в классе, и я хочу, чтобы он рисовал на панели (у меня несколько панелей).

public void preveri() 
{ 
    for (int i = 0; i < posamezne_crke.Length; i++) 
    { 
     velika_crka = Char.ToUpper(posamezne_crke[i]).ToString(); 
     if(tekst[i].Text == "_") 
     { 
      if (crka == velika_crka) 
      { 
       tekst[i].Text = crka; 
       break; 
      } 
      else 
      { 
       napaka++; 
       break; 
      } 
     } 
    } 
    form1.panel3_vislice.Paint += Form1_Paint; //writed here,beacouse if its on top panel3  value is null 
} 

public void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
{ 
    if (napaka >= 1) 
    { 
     MessageBox.Show(napaka.ToString() + "a"); //just for testing 
     e.Graphics.DrawLine(new Pen(Color.Black, 2), 85, 190, 210, 190); 
    } 
    if (napaka >= 2) 
    { 
     MessageBox.Show(napaka.ToString() + "s"); //just for testing 
     e.Graphics.DrawLine(new Pen(Color.Black, 2), 148, 190, 148, 50); 
    } 
} 
+3

Ваши имена переменных/методов по существу являются тарабарщиной для нас. Я бы рекомендовал перевести их для целей этого поста, чтобы было легче понять, что вы делаете в своем коде. – tnw

+0

Какое первое значение напака? 0? –

+2

Если окно сообщения отображается поверх формы, оно аннулирует область, заставляя событие «Paint» подниматься, как только вы перемещаете/закрываете его. Используйте 'Debug.WriteLine()' и смотри окно «Выход» в Visual Studio. –

ответ

0

Вы должны подписаться на событие Paint только один раз, во время инициализации, а не каждый раз, когда вы проверяете письмо. Чтобы принудительно перекрасить, вызовите метод Invalidate() на панели.

+0

Пробовал это, но кучка panel3 значение null, как я могу это исправить? – user3062657

+0

Удостоверьтесь, что это после вызова InitializeComponent() –

+0

Перемещено в функцию, которая отключается только один раз, но рисунок по-прежнему зацикливается, и что-то рисовать теперь просто мигает все время – user3062657

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