Поделиться через


Практическое руководство. Определение состояния кнопок мыши

Обновлен: Ноябрь 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;
        }
    }

}

См. также

Задачи

Пример определения состояния кнопок мыши

Основные понятия

Общие сведения о входных данных