2012-03-29 99 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

相关问题