Cliquez sur la souris et faites glisser L'événement WPF
je développe un contrôle analogique de pointeur. L'utilisateur est en mesure de cliquer sur la main minute ou heure et de faire glisser pour tourner l'aiguille pour sélectionner l'heure spécifique. Je me demandais comment détecter un tel événement de clic et de glisser.
j'ai essayé D'utiliser MouseLeftButtonDown + MouseMove mais je ne peux pas le faire fonctionner car MouseMove est toujours déclenché lorsque la mousemove se produit malgré moi en utilisant un drapeau. Est-il un moyen plus facile?
public bool dragAction = false;
private void minuteHand_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
dragAction = true;
minuteHand_MouseMove(this.minuteHand, e);
}
private void minuteHand_MouseMove(object sender, MouseEventArgs e)
{
if (dragAction == true)
{
//my code: moving the needle
}
}
private void minuteHand_MouseLeftButtonUp(object sender, MouseEventArgs e)
{
dragAction = false;
}
10
demandé sur
Ji yong
2013-07-03 11:02:55
3 réponses
Vous pouvez rendre les choses plus facile et n'a pas besoin de manipuler la souris vers le bas / haut :
private void minuteHand_MouseMove(object sender, MouseEventArgs e)
{
if (Mouse.LeftButton == MouseButtonState.Pressed)
{
//my code: moving the needle
}
}
4
répondu
deafjeff
2013-07-03 08:15:47
je pense que c'est la méthode la plus simple et la plus simple :
private void Window_MouseMove(object sender, MouseEventArgs e) {
if (e.LeftButton == MouseButtonState.Pressed) {
this.DragMove();
}
}
4
répondu
George TG
2015-06-10 04:36:02
public bool dragAction = false;
private void minuteHand_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
dragAction = true;
minuteHand_MouseMove(this.minuteHand, e);
}
private void minuteHand_MouseMove(object sender, MouseEventArgs e)
{
if (dragAction == true)
{
this.DragMove();
}
}
private void minuteHand_MouseLeftButtonUp(object sender, MouseEventArgs e)
{
dragAction = false;
}
le truc
3
répondu
Nick Prozee
2013-12-05 13:58:39