如何从另一个方法调用事件处理程序

时间:2019-09-27 20:24:46

标签: c# events methods

给出以下事件处理程序代码:

transtion:0.5s;

如何从另一种方法调用它:

private void image1_MouseDown(object sender, MouseButtonEventArgs e)
        {
            ///////////
        }

1 个答案:

答案 0 :(得分:0)

事件处理程序是常规方法,就像其他方法一样。

之所以不能像您尝试的那样调用它,是因为MouseDown事件采用一个MouseButtonEventArgs实例,而计时器的Tick事件采用了基数。类EventArgs

您需要创建MouseButtonEventArgs的新实例,但是随后需要使用设备和其他事件数据对其进行初始化。

一个更好的选择是将MouseDown事件处理程序的主体重构为带有单独参数的方法,然后您可以调用该方法而无需创建MouseButtonEventArgs实例。

private void image1_MouseDown(object sender, MouseButtonEventArgs e)
{
    this.ProcessImageMouseDown(e.ChangedButton, e.ButtonState, e.GetPosition(sender as FrameworkElement));
}

private void timerTick(object sender, EventArgs e)
{
    this.ProcessImageMouseDown(MouseButton.Left, MouseButtonState.Pressed, new Point(10d, 20d));
}

private void ProcessImageMouseDown(MouseButton button, MouseButtonState state, System.Windows.Point position)
{
    // Do actual processing here.
}