Учебники

Silverlight — обработка ввода

В этой главе мы узнаем, как обрабатывать пользовательский ввод в приложениях Silverlight. Silverlight предоставляет мощный API, с помощью которого приложение может получать ввод с различных устройств, таких как мышь, клавиатура, сенсорный экран и т. Д.

Типы ввода

Существует несколько разных способов, которыми пользователь может взаимодействовать с вашим приложением. Самый очевидный способ — с помощью мыши. Silverlight предлагает события для отслеживания —

  • Движения мыши
  • Нажатие кнопки и
  • Колесо деятельности

Конечно, есть и клавиатура, а Silverlight также поддерживает сенсорный ввод. Если вы знакомы с поддержкой касания в Windows, вы знаете, что сенсорный ввод может быть представлен либо как события низкого уровня, предоставляющие подробную информацию, либо он может быть обобщен в события высокого уровня, называемые жестами.

События мыши

Давайте начнем с рассмотрения событий ввода мыши, предлагаемых Silverlight. Некоторые события связаны с движением указателя мыши.

  • Событие MouseMove возникает каждый раз, когда указатель перемещается, когда он находится над элементами, к которым вы прикрепили обработчик.

  • Вы также получаете события MouseEnter и MouseLeave, чтобы уведомить вас о том, когда мышь перемещается в элемент и выходит из него.

Событие MouseMove возникает каждый раз, когда указатель перемещается, когда он находится над элементами, к которым вы прикрепили обработчик.

Вы также получаете события MouseEnter и MouseLeave, чтобы уведомить вас о том, когда мышь перемещается в элемент и выходит из него.

Ниже приведен код XAML, в который добавлены эллипс и TextBlock.

<UserControl x:Class="MouseInput.MainPage" 
   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" 
   mc:Ignorable = "d" 
   d:DesignHeight = "300" d:DesignWidth = "400">  
   
   <Grid x:Name = "LayoutRoot" Background = "White">
	
      <TextBlock x:Name = "mouseText" FontSize = "40" 
         VerticalAlignment = "Top" Height = "76" Margin = "0,10,0,0" />
			 
      <Ellipse
         Name = "myEllipse"  
         Width = "320" Height = "150" HorizontalAlignment = "Left" 
         VerticalAlignment = "Top" Margin = "27,103,0,0" 
         Stroke = "Black" StrokeThickness = "10" Fill = "#00FF0000" 
         MouseEnter = "myEllipse_MouseEnter" 
         MouseLeave = "myEllipse_MouseLeave" 
         MouseMove = "myEllipse_MouseMove" /> 
			
   </Grid> 
	
</UserControl>

Ниже приведена реализация различных событий ввода мыши .

using System.Windows.Controls; 
using System.Windows.Input; 
using System.Windows.Media; 
 
namespace MouseInput { 

   public partial class MainPage : UserControl { 
	
      public MainPage() { 
         InitializeComponent(); 
      } 
     
      private void myEllipse_MouseEnter(object sender, MouseEventArgs e) { 
         mouseText.Text = "Mouse Enter"; 
         myEllipse.Stroke = new SolidColorBrush(Colors.Blue); 
      }  
      
      private void myEllipse_MouseLeave(object sender, MouseEventArgs e) { 
         mouseText.Text = "Mouse Leave"; 
         myEllipse.Stroke = new SolidColorBrush(Colors.Black);  
      }  
      
      private void myEllipse_MouseMove(object sender, MouseEventArgs e) { 
         mouseText.Text = "Mouse Move: " + e.GetPosition(myEllipse);  
      }  
   } 
}

Когда приведенный выше код скомпилирован и выполнен, вы увидите следующий вывод.

Мышь Ввод

Когда мышь войдет в эллипс, вы увидите изменение цвета и координат.

Изменить координаты

Когда мышь покидает эллипс, она покажет сообщение « мышь уходит » и изменит цвет по умолчанию.

Мышь оставить

клавиатура

Самым простым способом ввода текстовых данных в приложение для пользователя является клавиатура, если она доступна. Помните, что не у всех мобильных устройств есть клавиатура, кроме ноутбуков и настольных компьютеров.

  • Silverlight предлагает два простых события для ввода с клавиатуры: KeyUp и KeyDown .

  • Оба они передают KeyEventArgs в обработчик, а свойство Key указывает, какая клавиша была нажата.

  • В приведенном ниже примере некоторые из ввода с клавиатуры обрабатываются.

  • В следующем примере определяется обработчик события Click и обработчик события KeyDown .

Silverlight предлагает два простых события для ввода с клавиатуры: KeyUp и KeyDown .

Оба они передают KeyEventArgs в обработчик, а свойство Key указывает, какая клавиша была нажата.

В приведенном ниже примере некоторые из ввода с клавиатуры обрабатываются.

В следующем примере определяется обработчик события Click и обработчик события KeyDown .

Ниже приведен код XAML, в который добавляются различные элементы пользовательского интерфейса.

<UserControl x:Class = "KeyboardInput.MainPage" 
   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" 
   mc:Ignorable = "d" 
   d:DesignHeight = "300" d:DesignWidth = "400">
	
   <Grid x:Name = "LayoutRoot" Background = "White">
	
      <StackPanel Orientation = "Horizontal" KeyDown = "OnTextInputKeyDown"> 
         <TextBox Width = "400" Height = "30" Margin = "10"/> 
			
         <Button Click = "OnTextInputButtonClick" 
            Content = "Open" Margin = "10" Width = "50" Height = "30"/> 
				
      </StackPanel>
		
   </Grid> 
	
</UserControl>

Ниже приведен код C #, в котором обрабатываются различные события клавиатуры и нажатия.

using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Input;
  
namespace KeyboardInput {

   public partial class MainPage : UserControl { 
	
      public MainPage() { 
         InitializeComponent(); 
      } 
		
      private void OnTextInputKeyDown(object sender, KeyEventArgs e) { 
         if (e.Key == Key.O) { 
            handle(); 
            e.Handled = true; 
         } 
      } 
		
      private void OnTextInputButtonClick(object sender, RoutedEventArgs e) { 
         handle(); 
         //e.Handled = true; 
      } 
		
      public void handle() { 
         MessageBox.Show("Do you want to open a file?"); 
      }  
   } 
} 

Когда приведенный выше код скомпилирован и выполнен, вы увидите следующее:

KeyEventArgs

Если вы нажмете кнопку « Открыть» или щелкните в текстовом поле и нажмете « ОК» , то появится такое же сообщение.

Показать то же сообщение

Мы рекомендуем вам выполнить приведенный выше пример для лучшего понимания.