2012-03-29 62 views
4

因此,我有一個表單,我想要更改跟蹤欄的位置並在單擊標籤後觸發trackbar_scroll事件。到目前爲止,點擊標籤上改變了跟蹤條的價值,這就是很簡單:如何觸發另一個事件中的事件處理程序,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 2013-08-11 18:07:31

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 2012-03-29 21:52:20

相關問題