... Ist es möglich, Hot-Spots in C# zu erstellen, so dass ein Ereignis ausgelöst wird, wenn sich die Maus über einem bestimmten Bereich befindet?Erstellen von HotSpots in C#
Antwort
Ihr Standard-From-Objekt macht ein OnMouseMove-Ereignis verfügbar. Vorausgesetzt, dass Sie keine Kontrollen haben, wo die Hot Spots werden, Sie könnten nur die Koordinaten in diesem Fall behandeln:
protected override void OnMouseMove(MouseEventArgs mouseEvent) { string X = mouseEvent.X.ToString(); string Y = mouseEvent.Y.ToString(); //Add code here to match X & Y to your hot spot coordinates. }
Erstellen Sie eine transparente Panel
(wirklich transparent - durch das WS_EX_TRANSPARENT Bit in seinem erweiterten Fensterstil Einstellung - here's how), steckte es in die Position, die Sie auf anderen Kontrollen wollen, und behandeln MouseMove
darauf.
In WinForms gibt es kein wirklich transparentes Panel. Wenn Sie ein Panel so erstellen, wie Sie es beschreiben und mit anderen Controls/anderen Panels überlappen, sehen Sie tatsächlich den Formularhintergrund und nicht die Steuerelemente "hinter" Ihrem Panel. –
@Eric, bitte lesen Sie meine Antwort noch einmal aufmerksam - besonders das bisschen über "wirklich transparent" und WS_EX_TRANSPARENT. Dann folge dem Link in der Antwort und lies das. Ich spreche insbesondere nicht über die Einstellung "Hintergrund" auf "Transparent", und ich habe darauf geachtet, dies in der Antwort klar zu machen. –
Fügen Sie eine MouseHover-Ereignisbehandlungsroutine für die Steuerelemente hinzu, die für Ihren Hotspot verwendet werden sollen.
Vielen Dank, aber ich habe keine Kontrolle, wo ich den Hotspot haben möchte. Der Hotspot befindet sich irgendwo auf dem Hintergrund des Formulars ... –
Siehe Sequ3L's Kommentar, Sie können dieses Ereignis auf Ihrem Formular behandeln. –
baeltazor: Die Form ist auch eine Kontrolle. –
Sie können WndProc verwenden, um Windows-Nachrichten zu erfassen, oder Sie könnten GetCursorPos verwenden, um das zu bekommen Cursorposition auf dem Bildschirm.
Und was gibt es genau dafür, wenn man nur 'MouseMove' behandelt? Warum sollte Win32 API überhaupt hier involviert sein (beachte, dass es sich um C#/WinForms handelt)? –
WinForms hat keine "direkte" Unterstützung für diese Art von Aktion. Das erste Problem mit dem Panel ist, dass Sie keine nicht-rechteckige Region für die Erfassung von Ereignissen haben können. Das zweite Problem besteht darin, dass Sie, wenn Sie mehrere "Regionen" benötigen, möglicherweise mehr Panel-Panel-Steuerelemente hinzufügen müssen, um die Unordnung zu erhöhen. Außerdem unterstützen einige Steuerelemente das Empfangen von Ereignissen nicht, wenn ein anderes Steuerelement vorhanden ist, obwohl es transparent ist. –
Wenn Sie etwas Leichtes haben möchten, sollten Sie die Win32-API in Betracht ziehen. –
- 1. So erkennen Sie Hotspots in einem Bild
- 2. Imagemap mit in Hotspots platzierten Symbolen
- 3. Erstellen von aktiven Bereichen (Hotspots) im Bild mit JavaScript und PHP
- 4. Erstellen von Berichten in C#
- 5. Erstellen von Dateien in C++
- 6. Erstellen von String in C
- 7. GC Analyse-Protokolle für Sun Hotspots, JVM 6
- 8. Erstellen von Sinus- oder Rechteckwellen in C#
- 9. Generisch erstellen von Objekten in C#
- 10. Erstellen von Gantt-Diagramm in C#
- 11. Erstellen einer Karte von Lambdas in C++
- 12. Erstellen von Transaktionsspeicher C++ - Code in g ++
- 13. Erstellen von Datenbanken in einer C# -Anwendung
- 14. Erstellen von Objekten in Loop C#
- 15. Erstellen von ActiveX-DLL in Visual C++
- 16. Erstellen von Dateien in Objective-C
- 17. Erstellen eines Array von Threads in C#
- 18. Objekte von einer Schnittstelle in C# erstellen
- 19. Erstellen von benutzerdefinierten Leistungsindikatoren in Visual C++
- 20. Erstellen von Windows-Formularen in C
- 21. Erstellen von XML in C++ Code
- 22. einen shared_ptr von Vektor in C Erstellen ++
- 23. Erstellen von MongoDB C-Treiber in Windows
- 24. Erstellen von organischen Formen in C# - WPF
- 25. Zugriffsproblem beim Erstellen von ZIP in C#
- 26. So machen Sie Hotspots auf Video für das Web
- 27. C++ Array von Widgets erstellen
- 28. Zip erstellen in C#
- 29. Erstellen Fehler in C#
- 30. Erstellen von Win32-Ereignissen von C#
Das ist in der Theorie gut, aber normalerweise möchte man, dass die Hotspots mit einigen Kontrollen überlappen. Und dann müssen Sie 'MouseMove' für alle Steuerelemente handhaben und die Mauskoordinaten entsprechend konvertieren. Und im Gegensatz zu WPF gibt es keine Möglichkeit, "Vorschau" Mausereignisse in WinForms zu bekommen ... –
Danke dafür, sehr hilfreich! –