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.
Partager