Przechwytywanie kliknięć

0

Witam, próbuję napisać kod który przechwytuje kliknięcia,
np. dla dwóch wyświetla ContextMenu, dla trzech otwiera okien z informacjami.
Przy czym e.Click wynosi zawsze 1.

private void test_MouseClick(object sender, MouseEventArgs e)
{
   if (e.Button == MouseButtons.Left && e.Clicks == 2)
      contextMenu.Show(dataGridView, e.Location); 
   //if (e.Button == MouseButtons.Left && e.Clicks == 3)
     // contextMenu.Show(dataGridView, e.Location); 
}
0

To zdarzenie reaguje na pojedyncze kliknięcie i już.
Może tak:
User klika, odpalasz jakiś Timer i zapisujesz ilość_klików=1, za każdym następnym klikiem ilość_klików++;
Timer tyka i tyka i dochodzi do końca, odpala się jego zdarzenie: sprawdzenei ilości kliknięć i wybranie odpowiedniej akcji, wyzerowanei ilości klików i zhaltowanie Timera.

0

Gwoli ścisłoci: Czas double clicka jest definiowany przez system ( i są pewnie do niego odpowiednie zdarzenia ), triple click nie jest tak wspierany :)
Żeby takie wychwytywanie triple clicka było przyjazne dla użytkownika dobrze byłoby pobrać czas double clicka z systemu i przemnożyć przez 1.5 żeby dało się zdąrzyć ale też żeby nie przeszkadzał w normalnym klikaniu.

WARNING: Sposób z Timerem zbyt idealny, będzie robić problemy dla pojedynczego klikania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0