WPF - Mouse
Existem diferentes tipos de entradas do mouse, como MouseDown, MouseEnter, MouseLeave, etc. No exemplo a seguir, lidaremos com algumas das entradas do mouse.
Vamos criar um novo projeto WPF com o nome WPFMouseInput.
Arraste um retângulo e três blocos de texto para um painel de pilha e defina as seguintes propriedades e eventos, conforme mostrado no seguinte arquivo 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>
Aqui está o código C # no qual diferentes eventos de mouse são tratados.
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 você compila e executa o código acima, ele irá produzir a seguinte janela -
Quando o mouse entra dentro do retângulo, a cor do retângulo muda automaticamente. Além disso, você receberá uma mensagem informando que o mouse inseriu junto com suas coordenadas.
Quando você clica dentro do retângulo, ele muda de cor e mostra as coordenadas nas quais o mouse foi clicado.
Quando o mouse sair do retângulo, ele mostrará uma mensagem de que o mouse saiu e o retângulo mudará para sua cor padrão.