Практическое руководство. Определение состояния кнопок мыши
Обновлен: Ноябрь 2007
В этом примере показано использование событий кнопок мыши и свойства MouseButtonState для определения, является ли конкретная кнопка мыши нажатой или отпущенной.
Этот пример состоит из файла Язык XAML (Extensible Application Markup Language) и файла кода программной части. Полный пример см. в разделе Пример определения состояния кнопок мыши.
Пример
Следующий код создает пользовательский интерфейс, состоящий из TextBlock в StackPanel, и присоединяет обработчики событий к событиям MouseLeftButtonDown и MouseLeftButtonUp.
<StackPanel Height="100" Width="100"
MouseLeftButtonDown="HandleButtonDown"
MouseLeftButtonUp="HandleButtonDown"
Background="#d08080"
DockPanel.Dock="Left"
>
<TextBlock>Click on Me</TextBlock>
</StackPanel>
Следующий код программной части создает обработчики событий MouseLeftButtonUp и MouseLeftButtonDown. При нажатии левой кнопки мыши размеры TextBlock увеличивается. Когда левая кнопка мыши отпущена, размеры TextBlock восстанавливаются до исходной высоты и ширины.
Partial Public Class Window1
Inherits Window
Public Sub New()
InitializeComponent()
End Sub
Private Sub HandleButtonDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
' Casting the source to a StackPanel
Dim sourceStackPanel As StackPanel = CType(e.Source, StackPanel)
' If the button is pressed then make dimensions larger.
If e.ButtonState = MouseButtonState.Pressed Then
sourceStackPanel.Width = 200
sourceStackPanel.Height = 200
' If the button is released then make dimensions smaller.
ElseIf e.ButtonState = MouseButtonState.Released Then
sourceStackPanel.Width = 100
sourceStackPanel.Height = 100
End If
End Sub
End Class
public Window1()
{
InitializeComponent();
}
void HandleButtonDown(object sender, MouseButtonEventArgs e)
{
//Casting the source to a StackPanel
StackPanel sourceStackPanel = e.Source as StackPanel;
//If the button is pressed then make dimensions larger.
if (e.ButtonState == MouseButtonState.Pressed)
{
sourceStackPanel.Width = 200;
sourceStackPanel.Height = 200;
}
//If the button is released then make dimensions smaller.
else if (e.ButtonState == MouseButtonState.Released)
{
sourceStackPanel.Width = 100;
sourceStackPanel.Height = 100;
}
}
}
См. также
Задачи
Пример определения состояния кнопок мыши