Gibt es ein Ereignis in C#, das ausgelöst wird, wenn das Formular STOPPEN verschoben wird. Nicht während es sich bewegt.
Wenn es kein Ereignis für es gibt, gibt es eine Möglichkeit, es mit WndProc zu tun?
Gibt es ein Ereignis in C#, das ausgelöst wird, wenn das Formular STOPPEN verschoben wird. Nicht während es sich bewegt.
Wenn es kein Ereignis für es gibt, gibt es eine Möglichkeit, es mit WndProc zu tun?
Dies ist keine ausfallsichere Lösung, aber es ist reines .NET und es ist ganz einfach. Fügen Sie Ihrem Formular einen Timer hinzu und stellen Sie ihn auf eine relativ kurze Verzögerung ein (100-150 ms waren für mich OK). Fügen Sie den folgenden Code für die Ereignisse Form.LocationChanged und Timer.Tick hinzu:
private void Form_LocationChanged(object sender, EventArgs e)
{
if (this.Text != "Moving")
{
this.Text = "Moving";
}
tmrStoppedMoving.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
tmrStoppedMoving.Start();
this.Text = "Stopped";
}
Wenn Sie eine genauere Handhabung wünschen (genau wissen, wann die Maustaste in der Titelleiste losgelassen wird usw.), müssen Sie sich wahrscheinlich mit der Überwachung von Windows-Meldungen beschäftigen.
Für alle, die hierher kommen und ein wenig mehr über den letzten Teil dieser Antwort wissen wollen (Bestimmen, wann die Maus während einer Bewegung gedrückt und losgelassen wird), lesen Sie meine Frage, die ein wenig mehr darauf eingeht stackoverflow.com/questions/24493167/
Ich hatte das gleiche Problem mit einem Benutzer-Steuerelement, aber es hat nicht die ResizeEnd Ereignis. Die Lösung, die funktionierte, ist, die WndProc-Methode zu überschreiben und auf EXITSIZEMOVE zu warten.
Siehe Beispiel aquí
Setzen Sie einfach ein Flag auf true, wenn onmove-Ereignisse ausgelöst werden. Wenn ein Mouseup-Ereignis eintritt und das Flag wahr ist, wird das Formular nicht mehr verschoben.
Ich gebe zu, dass dies wahrscheinlich nicht funktionieren wird, wenn ein Benutzer ein Formular über die Tastatur verschiebt, aber das ist ziemlich selten.
Es ist sehr unwahrscheinlich, dass das MouseUp-Ereignis ausgelöst wird, da das Verschieben des Formulars normalerweise über die Titelleiste erfolgt und Mausereignisse nicht für Mausoperationen in diesem Bereich ausgelöst werden.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.