2012-03-29 3 views
4

Итак, у меня есть форма, где я хочу изменить положение трекбара и вызвать событие trackbar_scroll после нажатия на метку. До сих пор, нажав на ярлыке изменили значение TrackBar, тот легко:Как вызвать обработчик события из другого события, C#

 private void label4_Click(object sender, EventArgs e) 
     { 
      trackBar1.Value = 0; 
     } 
     private void trackBar1_Scroll(object sender, EventArgs e) 
     { 
      if (trackBar1.Value == 0) 
      { 
       try 
       { 
        //code... 
       } 
       catch 
       { 
        MessageBox.Show("Error occured"); 
       } 
      } 
     } 

Как я называю (..) событие trackBar1_scroll внутри этикетки кликать?

ответ

9

Попробуйте позвонить прямо. Вы просто должны поставить себя с использованием параметров:

trackBar1_Scroll(trackBar1, EventArgs.Empty); 

или просто

trackBar1_Scroll(null, null); 

, если не используются параметры.

+0

Это было очень полезно для меня! Спасибо! – Victor

5

Другой подход, который вы могли бы принять, помимо ответа @LarsTech (что абсолютно правильно), заключается в том, чтобы реорганизовать ваш код, чтобы уменьшить необходимость предоставления пустых параметров. Так как вы на самом деле не используя EventArgs или ссылки на отправителя непосредственно, учитывая ваш пример выше, вы могли бы сделать что-то вроде следующего:

private void DoSomething(int value) 
{ 
    ... 
} 

private void trackBar1_Scroll(object sender, EventArgs e) 
{ 
    DoSomething(trackBar1.Value); 
} 

private void label4_Click(object sender, EventArgs e) 
{ 
    DoSomething(...); 
} 

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

+0

+1 При кодировании я на самом деле делаю что-то большее в соответствии с вашими ответами, чем мой собственный ответ. – LarsTech

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