![](/img/trans.png)
[英]How to access a variable outside an event handler when it is defined within the event handler in c#?
[英]How to trigger an event handler from within another event, C#
所以我有一个表单,我想改变轨迹栏的位置,并在点击标签后触发trackbar_scroll事件。 到目前为止,点击标签更改了轨迹栏的值,这很容易:
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(..)事件?
尝试直接调用它。 您只需自己提供参数:
trackBar1_Scroll(trackBar1, EventArgs.Empty);
或者干脆
trackBar1_Scroll(null, null);
如果没有使用参数。
除了@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(...);
}
当你用一个空参数调用一个事件处理程序时,它总是感觉像代码味道 ,只是执行你可以抽象出来的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.