Mega Code Archive

 
Categories / C# / WPF
 

Use Mouse Capture to let a Control capture an event

<Window x:Class="RoutedEvents.MousePosition"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Title="MousePosition" Height="300" Width="300">   <StackPanel>     <Rectangle Name="rect" MouseMove="MouseMoved" Fill="LightBlue" ></Rectangle>     <Button Name="cmdCapture" Click="cmdCapture_Click">Capture the Mouse</Button>     <TextBlock Name="lblInfo"></TextBlock>   </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace RoutedEvents {     public partial class MousePosition : System.Windows.Window     {         public MousePosition()         {             InitializeComponent();         }         private void cmdCapture_Click(object sender, RoutedEventArgs e)         {             this.AddHandler(Mouse.LostMouseCaptureEvent,new RoutedEventHandler(this.LostCapture));             Mouse.Capture(rect);             cmdCapture.Content = "Mouse captured";         }         private void MouseMoved(object sender, MouseEventArgs e)         {             Point pt = e.GetPosition(this);             lblInfo.Text = String.Format("({0},{1}) in window coordinates",pt.X, pt.Y);                     }         private void LostCapture(object sender, RoutedEventArgs e)         {             lblInfo.Text = "Lost capture";             cmdCapture.Content = "Capture the Mouse";         }     } }