Non, il n'y a pas d'événement MousePreMove
, mais vous pouvez écrire quelque chose par vous-même pour obtenir la direction du curseur. Par exemple:
public partial class Form1 : Form {
Point cursorPosition;
Direction cursorDirection, previousCursorPosition;
public event EventHandler<MouseDirectionEventArgs> DirectionChanged;
public Form1() {
InitializeComponent();
cursorPosition = PointToClient(Cursor.Position);
DirectionChanged += new EventHandler<MouseDirectionEventArgs>(Form1_DirectionChanged);
}
void Form1_DirectionChanged(object sender, MouseDirectionEventArgs e) {
MessageBox.Show(e.MouseDirection.ToString());
}
protected override void OnMouseMove(MouseEventArgs e) {
if (e.X > cursorPosition.X && e.Y > cursorPosition.Y)
cursorDirection = Direction.RightDown;
else if (e.X > cursorPosition.X && e.Y < cursorPosition.Y)
cursorDirection = Direction.RightUp;
else if (e.X < cursorPosition.X && e.Y > cursorPosition.Y)
cursorDirection = Direction.LeftDown;
else if (e.X < cursorPosition.X && e.Y < cursorPosition.Y)
cursorDirection = Direction.LeftUp;
OnDirectionChanged(new MouseDirectionEventArgs(cursorDirection));
previousCursorPosition = new Point(cursorPosition.X, cursorPosition.Y);
cursorPosition = e.Location;
base.OnMouseMove(e);
}
protected virtual void OnDirectionChanged(MouseDirectionEventArgs e){
if (DirectionChanged != null)
DirectionChanged(this, e);
}
}
enum Direction {
LeftUp,
LeftDown,
RightUp,
RightDown
}
class MouseDirectionEventArgs : EventArgs {
public readonly Direction MouseDirection {
get;
set;
}
public MouseDirectionEventArgs(Direction direction) {
MouseDirection = direction;
}
}
C'est un programme simple qui montre la direction de la souris par rapport à la position de la souris précédente.
EDIT:
Si vous voulez éviter le déplacement de la souris dans une direction que vous devez faire comme ici:
void Form1_DirectionChanged(object sender, MouseDirectionEventArgs e) {
if(e.MouseDirtection == Direction.LeftUp) //example
Cursor.Position = PointToScreen(previousCursorPosition);
}
On dirait que vous demandez une machine à voyager dans le temps. Stockez la position précédemment connue à la place. –