Welches Event wird gefeuert?

14/01/2008 - 15:25 von Heiko Tulay | Report spam
hi,

welches Event wird beim Verlassen der Buttongrenzen
mit gedrückter Maustaste gefeuert?
Der Button wechselt dann den Zustand, aber das MouseLeaveEvent
wird nur gefeuert wenn die Maus nicht gedrückt ist.

Danke Heiko
 

Lesen sie die antworten

#1 Frank Dzaebel
15/01/2008 - 00:19 | Warnen spam
Hallo Heiko,

welches Event wird beim Verlassen der Buttongrenzen
mit gedrückter Maustaste gefeuert?



Wenn die Maustaste gedrückt ist, werden dem Button-
Control MouseMove-Ereignisse gesendet. Diese
kannst Du benutzen, um festzustellen, ob die
Cursor.Position in den b.Bounds ist. Als Ansatz:

bool mouseWasOver = false;
void button1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.None) return;
Button b = (Button)sender;
Rectangle rc = new Rectangle(Cursor.Position, Size.Empty);
Rectangle r = b.RectangleToScreen(b.Bounds);
bool mouseIsOver = rc.IntersectsWith(r);
if (mouseWasOver && !mouseIsOver)
button1_MouseLeave(b, EventArgs.Empty);
mouseWasOver = mouseIsOver;
// genauer: -> Cursor.Current.HotSpot
}

int c = 0;
private void button1_MouseLeave(object sender, EventArgs e)
{
Debug.WriteLine(c++ + "->button1_Leave");
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen