IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

MouseEnter non déclenché lors d'un drag'n'drop


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 97
    Points : 106
    Points
    106
    Par défaut MouseEnter non déclenché lors d'un drag'n'drop
    Bonjour,

    Je débute dans l'utilisation du drag'n'drop et je rencontre un problème.

    J'ai UserControl comme ceci :

    Xaml :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <UserControl x:Class="DragAndDrop2.PositionControl"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 Background="Transparent"
                 MouseEnter="UserControl_MouseEnter"
                 MouseLeave="UserControl_MouseLeave">
        <Rectangle Width="80" Height="25" Stroke="Black" StrokeDashArray="5" StrokeThickness="1" />
    </UserControl>

    Code behind :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private void UserControl_MouseEnter(object sender, MouseEventArgs e)
            {
                Background = Brushes.Yellow;
            }
     
            private void UserControl_MouseLeave(object sender, MouseEventArgs e)
            {
                Background = Brushes.Transparent;
            }

    Dans ma fenêtre principale, j'ai ceci :

    Xaml :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <Window x:Class="DragAndDrop2.Window1"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:loc="clr-namespace:DragAndDrop2"
            Title="Window1" WindowState="Maximized">
        <Canvas x:Name="myCanvas">
            <loc:PositionControl Canvas.Left="200" Canvas.Top="200" />
            <Label Canvas.Left="10" Canvas.Top="10" Width="80" Height="25" Background="LightBlue" MouseMove="Label_MouseMove" MouseUp="Label_MouseUp" />        
        </Canvas>
    </Window>

    Code behind :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    private void Label_MouseMove(object sender, MouseEventArgs e)
            {
                if (e.LeftButton == MouseButtonState.Pressed)
                {
                    Label label = (Label)sender;
                    label.CaptureMouse();
     
                    double left = e.GetPosition(myCanvas).X - label.ActualWidth / 2;
                    double top = e.GetPosition(myCanvas).Y - label.ActualHeight / 2;
     
                    Canvas.SetLeft(label, left);
                    Canvas.SetTop(label, top);
                }
            }
     
            private void Label_MouseUp(object sender, MouseButtonEventArgs e)
            {
                Label label = (Label)sender;
                label.ReleaseMouseCapture();
            }

    Ce que j'aimerais, ce qu'à l'exécution, lorsque je déplace le controle bleu sur le controle en pointillés, celui-ci change de couleur de fond.

    Hors il semble que l'évènement MouseEnter de mon UserControl ne soit pas déclenché.

    Pourtant si je passe la souris sur mon UserControl sans faire le drag'n'drop, il passe bien en jaune.

    Avez-vous une idée du pourquoi?

    Merci, Cécile.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je pense que le Drag n Drop définis l'évènement MouseEnter comme gérer (mais pas sûr vu que j'ai jamais testé ce cas).
    Essaies-ça mais tu es obligé de supprimer l'abonnement au MouseEnter dans le XAM et de passer pas le code-behind :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.AddHandler(UserControl.MouseEnterEvent, new RoutedEventHandler(UserControl_MouseEnter), true);

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 97
    Points : 106
    Points
    106
    Par défaut
    Merci pour ta réponse h2s84.
    Mais malgré ce changement, le problème reste entier.

Discussions similaires

  1. [CS5] Event.EXITING non déclenché lors d'un appel à NativeProcess.exit()
    Par thenaoh dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 02/06/2011, 12h52
  2. [JList] afficher un menu lors d'un drag and drop
    Par skyangel dans le forum Composants
    Réponses: 4
    Dernier message: 12/03/2008, 15h16
  3. Réponses: 11
    Dernier message: 17/01/2008, 18h53
  4. Réponses: 4
    Dernier message: 01/10/2005, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo