Как вызвать обработчик события из другого метода - PullRequest
0 голосов
/ 27 сентября 2019

Учитывая следующий код обработчика события:

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

Как я могу вызвать его из другого метода:

 private void timerTick(object sender, EventArgs e)
        {
            image1_MouseDown(object,  e); // error

        }

1 Ответ

0 голосов
/ 29 сентября 2019

Обработчики событий являются обычными методами, как и любые другие.

Причина, по которой вы не можете вызывать это так, как пытаетесь сделать, заключается в том, что событие MouseDown принимает экземпляр MouseButtonEventArgs, в то время какTick событие таймеров принимает базовый класс EventArgs.

Вам нужно будет создать новый экземпляр MouseButtonEventArgs, но затем вам нужно будет инициализировать его с устройством и другим событиемdata.

Лучшим вариантом было бы реорганизовать тело обработчика события 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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...