Jak uzyskać wszystkie kliknięcia, aby przejść przez wydarzenie? Zauważyłem, że zbyt szybkie kliknięcie powoduje dwukrotne kliknięcie i nie wysyła kliknięć do obsługi zdarzenia. Czy istnieje sposób na uzyskanie wszystkich kliknięć?WinForms wyłącza podwójne kliknięcia i akceptuje wszystkie kliknięcia myszą?
Odpowiedz
Nie jestem pewien, dlaczego to pytanie dostało nagrodę, zaakceptowana odpowiedź powinna być już bardzo bliska rozwiązania. Poza tym, że zamiast MouseDown powinieneś używać MouseUp, użytkownik zazwyczaj oczekuje, że działanie kliknięcia zostanie zastosowane po zwolnieniu przycisku. Co zapewnia wycofanie się "oops, nie oznacza klikania, przesuwaj myszką, aby została zignorowana".
Jednak dla wbudowanych elementów sterujących WinForm, takich jak PictureBox, można to skonfigurować za pomocą metody Control.SetStyle(). Dodaj nową klasę do swojego projektu i wklej poniższy kod. Skompilować. Upuścić nowego sterowania z góry przybornika:
using System;
using System.Windows.Forms;
class MyPictureBox : PictureBox {
public MyPictureBox() {
this.SetStyle(ControlStyles.StandardDoubleClick, false);
}
}
Czy uważaj jednak, że to nie będzie działać dla klas .NET, które owijają istniejącej rodzimej sterowania systemu Windows. Podobnie jak TextBox, ListBox, TreeView itp. Podstawową konfiguracją jest flaga stylu WNDCLASSEX.style member, CS_DBLCLKS. Kod ustawiający tę flagę stylu jest zapiekany w systemie Windows i nie można go zmienić. Potrzebujesz innego rodzaju operacji, aby dwukrotnie kliknąć z powrotem w jedno kliknięcie. Można to zrobić poprzez nadpisanie metody WndProc(), dam przykład dla TextBox:
using System;
using System.Windows.Forms;
class MyTextBox : TextBox {
protected override void WndProc(ref Message m) {
// Change WM_LBUTTONDBLCLK to WM_LBUTTONCLICK
if (m.Msg == 0x203) m.Msg = 0x201;
base.WndProc(ref m);
}
}
Wystarczy zmienić nazwę klasy, jeśli chcesz to zrobić dla innych kontroli. Commandment WinFormy, które sprawiają, że działa tak, jak chcesz, nigdy nie pobierają dużo kodu, tylko Petzold :)
Myślę, że chcesz policzyć wszystkie kliknięcia. Jeśli chcesz policzyć kliknięcie, ustaw jedną zmienną licznika i zwiększ ją w zdarzeniu kliknięcia. Może ci to pomóc ...
Zrób to sam i kliknij go naprawdę szybko 10 razy. Otrzymasz liczbę mniejszą niż 10. Chcę wszystkie 10 kliknięć. – Will
Chcesz użyć sterowania zdarzeniem MouseDown zamiast zdarzenia Click. MouseDown będzie wywoływany za każdym razem, gdy mysz zostanie "wciśnięta" na tej kontrolce. Kliknięcie nie może zostać wywołane, jeśli system uzna to za podwójne kliknięcie. Zamiast tego zostanie podniesione wydarzenie DoubleClick.
- 1. Rozróżnianie kliknięcia myszą i kliknięcia myszą w wpf
- 2. Symulowanie kliknięcia myszą w JavaScript
- 3. Vim: zmiana zachowania kliknięcia myszą
- 4. Odrzucanie kliknięcia myszą w TDbGrid.OnColumnMoved
- 5. Emacsclient nie reaguje na kliknięcia myszą
- 6. Skrobanie stron internetowych wymagające kliknięcia myszą?
- 7. MATLAB, jak uzyskać współrzędne kliknięcia myszą
- 8. Wykrywanie kliknięcia myszą w skrypcie bash
- 9. Uzyskaj pozycję/przycisk kliknięcia myszą w zdarzeniu DoubleClick.
- 10. HTML5 INPUT type = 'number' - rozróżnia kliknięcia myszą i wartością zmiany
- 11. Odbieranie zdarzenia dwukrotnego kliknięcia
- 12. Oblicz kąt kliknięcia
- 13. Uzyskuj współrzędne kliknięcia myszą na svg przy użyciu d3
- 14. Jak wykrywać stukanie (wejście dotykowe) globalnie zamiast kliknięcia myszą?
- 15. Zdarzenia dotykowe a zdarzenia kliknięcia myszą za pomocą actionscript 3
- 16. Wykonywanie podwójnego kliknięcia korzystając CGEventCreateMouseEvent()
- 17. Datacicker jQuery UI - próba przechwytywania zdarzenia kliknięcia od daty kliknięcia
- 18. translate3d() powodujące nieprawidłowe wyświetlanie zdarzeń kliknięcia/kliknięcia jQuery
- 19. iPad ma trzy kliknięcia dla zdarzenia kliknięcia JavaScriptu
- 20. Klastry z Androidem i kliknięcia znaczników
- 21. knockoutjs pojedyncze i podwójne kliknięcie
- 22. HTML5 canvas zdarzenia kliknięcia
- 23. kliknięcie kliknięcia CellTable
- 24. Zdarzenie wielokrotnego kliknięcia JQuery?
- 25. UITableViewCell rozwinąć kliknięcia
- 26. docelowa na kliknięcia
- 27. JavaScript touchend kontra dylemat kliknięcia
- 28. Narzędzie do podwójnego kliknięcia przycisku w Androidzie
- 29. Zmień opóźnienie długiego kliknięcia
- 30. Zdarzenie kliknięcia przejścia CSS3
Zamiast tego użyj zdarzenia mousedown. –
@RussellTroywest Myślę, że zdarzenie [MouseClick] (http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mouseclick%28VS.80%29.aspx) byłoby lepsze. Z powodu podniesienia porządku. –
@Michael: Według MSDN "Dwa pojedyncze kliknięcia, które występują wystarczająco blisko, zgodnie z ustawieniami myszy systemu operacyjnego użytkownika, wygenerują zdarzenie MouseDoubleClick zamiast drugiego zdarzenia MouseClick." - Tak właśnie widzi High. –