События OnMarkerClick запускаются несколько раз - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь открыть окно сообщения, когда маркер щелкают левой кнопкой мыши. Когда щелкнул маркер, событие сработало, показывалось всплывающее окно, но оно срабатывает несколько раз (2 раза).

Это мой код

private void gmap_mainMap_OnMarkerClick(GMapMarker item, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Left && item.IsMouseOver){
        MessageBox.Show("Marker clicked", "Information");
    }
}

У кого-нибудь есть идея, почему событие повторяется несколько раз? Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Когда ваш код подписывается на событие? Многократная стрельба может указывать на отсутствие отписки от событий. Вы отписываетесь от этого события?

Прочтите здесь о том, чтобы отписаться от подписки , в противном случае это может привести к другим нежелательным эффектам в вашем коде. Хотя предлагаемое решение решает вашу проблему в краткосрочной перспективе, я бы посоветовал вам еще немного изучить проблему, чтобы предотвратить будущие проблемы.

0 голосов
/ 29 октября 2018

просто чтобы убедиться, что вы можете сделать это:

private bool MarkerWasClicked = false;

private void gmap_mainMap_OnMarkerClick(GMapMarker item, MouseEventArgs e)
{
    MarkerWasClicked = false;

    if (MarkerWasClicked == false){
        if (e.Button == System.Windows.Forms.MouseButtons.Left && item.IsMouseOver){
            MessageBox.Show("Marker clicked", "Information");
            MarkerWasClicked = true;
        }
    }
}
...