WPF - Mouse

Esistono diversi tipi di input del mouse come MouseDown, MouseEnter, MouseLeave, ecc. Nell'esempio seguente, gestiremo alcuni degli input del mouse.

  • Creiamo un nuovo progetto WPF con il nome WPFMouseInput.

  • Trascina un rettangolo e tre blocchi di testo in un pannello dello stack e imposta le proprietà e gli eventi seguenti come mostrato nel seguente file XAML.

<Window x:Class = "WPFMouseInput.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   xmlns:local = "clr-namespace:WPFMouseInput" 
   mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "604">
	
   <StackPanel> 
      <Rectangle x:Name = "mrRec" Fill = "AliceBlue" 
         MouseEnter = "OnMouseEnter" MouseLeave = "OnMouseLeave"  
         MouseMove = "OnMouseMove" MouseDown = "OnMouseDown" Height = "100" Margin = "20"> 
      </Rectangle> 
		
      <TextBlock x:Name = "txt1" Height = "31" HorizontalAlignment = "Right" 
         Width = "250" Margin = "0,0,294,0" /> 
      <TextBlock x:Name = "txt2" Height = "31" HorizontalAlignment = "Right"  
         Width = "250" Margin = "0,0,294,0" /> 
      <TextBlock x:Name = "txt3" Height = "31" HorizontalAlignment = "Right"  
         Width = "250" Margin = "0,0,294,0" /> 
			
   </StackPanel> 
	
</Window>

Di seguito è riportato il codice C # in cui vengono gestiti diversi eventi del mouse.

using System.Windows; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Shapes; 
 
namespace WPFMouseInput { 

   public partial class MainWindow : Window {
	
      public MainWindow() { 
         InitializeComponent(); 
      } 
		
      private void OnMouseEnter(object sender, MouseEventArgs e) { 
         Rectangle source = e.Source as Rectangle; 
			
         if (source != null) { 
            source.Fill = Brushes.SlateGray; 
         } 
			
         txt1.Text = "Mouse Entered"; 
      } 
		
      private void OnMouseLeave(object sender, MouseEventArgs e) { 
		
         // Cast the source of the event to a Button. 
         Rectangle source = e.Source as Rectangle;
			
         // If source is a Button. 
         if (source != null) { 
            source.Fill = Brushes.AliceBlue; 
         } 
			
         txt1.Text = "Mouse Leave"; 
         txt2.Text = ""; 
         txt3.Text = ""; 
      } 
		
      private void OnMouseMove(object sender, MouseEventArgs e) { 
         Point pnt = e.GetPosition(mrRec); 
         txt2.Text = "Mouse Move: " + pnt.ToString(); 
      } 
		
      private void OnMouseDown(object sender, MouseButtonEventArgs e) { 
         Rectangle source = e.Source as Rectangle; 
         Point pnt = e.GetPosition(mrRec); 
         txt3.Text = "Mouse Click: " + pnt.ToString(); 
			
         if (source != null) { 
            source.Fill = Brushes.Beige; 
         } 
      } 
		
   } 
}

Quando compili ed esegui il codice sopra, produrrà la seguente finestra:

Quando il mouse entra nel rettangolo, il colore del rettangolo cambierà automaticamente. Inoltre, riceverai un messaggio che il mouse ha inserito insieme alle sue coordinate.

Quando fai clic all'interno del rettangolo, cambierà colore e mostrerà le coordinate in cui è stato fatto clic con il mouse.

Quando il mouse lascia il rettangolo, mostrerà un messaggio che il mouse è uscito e il rettangolo cambierà nel suo colore predefinito.