Wenn ich eine Schaltfläche in einem Formular in C#, Visual Studio 2005, und eine Aktion ausgelöst durch eine Schaltfläche Ereignis wie MouseHover oder MouseDown, dann löst das Ereignis eine einzige Rufen Sie die Funktion auf, die die Aktion definiert, obwohl ich weiter schweben oder die linke Maustaste gedrückt halten kann. In diesem Fall versuche ich ein grafisches Objekt durch Drehen oder Übersetzen zu verschieben. Ich möchte nicht weiter mit der Maus klicken, um einen wiederholten Aufruf der Transformationsfunktion zu erhalten, halte einfach die Maus über den Mauszeiger oder halte die Maustaste gedrückt. Was hält die Handlung aufrecht, bis ich meine eigenen Handlungen eingestellt habe?Erstellen einer kontinuierlichen Aktion während eines Windows Form Mouse-Ereignisses
0
A
Antwort
0
Setzen Sie ein Flag auf MouseEnter und führen Sie die Aktion aus, während das Flag wahr bleibt. Setzen Sie das Flag auf MouseLeave auf false.
0
In Ihrem Fall müssen Sie eine Kombination der Ereignisse MouseDown, MouseMove und MouseUp verwenden.
Hier ein kleines vereinfachtes Beispiel zu starten:
private void OnMouseDown(object sender, EventArgs e)
{
//hit test to check if the mouse pointer is on a graphical object
_myHitObject = the_selected_object
}
private void OnMouseMove(object sender, EventArgs e)
{
if(_myHitObject != null)
//do your action relative to the mouse movements.
}
private void OnMouseUp(object sender, EventArgs e)
{
_myHitObject = null;
}
0
Die Lösung ist DoEvents(), die für das Mouseleave-Ereignis ermöglicht die Verwendung zu beachten, und die Klassenvariable „mehr“ geändert werden:
private void MouseEnter_ZoomIn (object sender, EventArgs e)
{
more = true;
while (more == true)
{
c1Chart3D1.ChartArea.View.ViewportScale *= ZoomMultiple;
Application.DoEvents();
}
} // MOUSEENTER_ZOOMIN()
// -------------------------------------
private void MouseLeave_Stop (object sender, EventArgs e)
{
more = false;
}
Verwandte Themen
- 1. Erstellen eines kontinuierlichen Hintergrundjobs während der Bereitstellung
- 2. Erstellen eines Controllers/einer Aktion href
- 3. Verschönerung einer Windows Form-Anwendung
- 4. AutoCompleteTextView Ereignisse zum kontinuierlichen Erstellen neuer Adapter
- 5. Verwenden eines Windows Form mit Ruby
- 6. Windows: Laden eines Filtertreibers, während Windows läuft
- 7. Form Aktion mit dh
- 8. Laravel Form Aktion URL
- 9. Frage System.ExecutionEngineException während von Windows Form WPF-Fenster geladen
- 10. Erstellen einer kontinuierlichen Beziehungskurve zwischen Cutoff und Prozenten
- 11. Android - ausblenden Taste während einer onClick Aktion
- 12. Hinzufügen eines Benutzersteuerelements mit Windows Form Designer
- 13. Erstellen einer zufälligen Form (Blob) eines bestimmten Bereichs in NetLogo
- 14. Erstellen einer Form durch Auswahl eines Menüpunktes Item Javafx
- 15. Ausführen eines kontinuierlichen Simulink-Modells mit Echtzeiteingabe?
- 16. Erstellen einer Form in C++
- 17. Design einer C# Windows Form App
- 18. Erstellen eines virtuellen Windows-Laufwerks
- 19. dynamisch zweidimensionales Array im kontinuierlichen Speicherblock erstellen
- 20. PIL-Attributfehler: Form beim Erstellen eines Arrays
- 21. Windows Form Vererbung
- 22. Das Erscheinungsbild eines Windows-Formulars erstellen
- 23. Zeichnen Form in Windows Form Anwendung
- 24. C# Windows Form Anwendung ist während der Laufzeit gesperrt
- 25. Windows Terminal - Windows Form zum Einbetten cmd
- 26. Windows Form "Loch"
- 27. Geben von Daten von einer Form in einer anderen Form in Windows Form C#
- 28. Testen einer Windows Form-Anwendung in C#
- 29. Dynamische Änderung eines Windows Form-Fenstertitels (zur Laufzeit)
- 30. von Windows Form Webformular
habe ich versucht, die oben mit dem folgenden Code: private void MouseEnter_ZoomIn (object sender, EventArgs e) { mehr = wahr; // while (mehr == true) if (mehr == true) { c1Chart3D1.ChartArea.View.ViewportScale * = ZoomMultiple; } } // MOUSEENTER_ZOOMIN() // ------------------------------------- private void MouseLeave_Stop (Objektabsender, EventArgs e) { more = false; } Ich hatte gehofft, dass das MouseLeave-Ereignis die While-Schleife beenden würde, aber das tat es nicht. – user32848