如何从另一个事件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(..)事件?

尝试直接调用它。你只需要自己提供参数:

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(...);
}

当你用空参数调用事件处理程序时,我总是觉得代码有味道,只是为了执行你可以抽象出来的代码。

相关内容

  • 没有找到相关文章

最新更新