Практическое руководство. Прокрутка подписей формы
Обновлен: Ноябрь 2007
Так как элемент управления Label не получает фокус и не поддерживает выделение с помощью клавиши TAB, приложение смартфона, состоящее только из элементов управления Label, не позволяет пользователю выполнять навигацию по надписям вне отображаемой клиентской области формы. Пользователь приложения карманного ПК может выбрать полосу прокрутки для навигации, но эта возможность недоступна в смартфоне.
Можно реализовать навигацию с помощью кода в обработчике событий для события KeyDown, которое изменяет значение свойства AutoScrollPosition.
Чтобы выполнить прокрутку в форме элементов управления "Подпись"
Добавьте несколько элементов управления Label к форме так, чтобы они располагались ниже видимой клиентской области. Используйте клавиши со стрелками в конструкторе Microsoft Visual Studio 2005 или напишите код инициализации для их позиционирования.
В конструкторе формы установите для свойств KeyPreview и AutoScroll значение true. Пользователи C# должны присоединить делегат для обработчика событий KeyDown.
Me.KeyPreview = True Me.AutoScroll = True
this.KeyPreview = true; this.KeyDown += new KeyEventHandler(Form1_KeyDown); this.AutoScroll = true;
Установите свойство AutoScrollPosition для вертикального перемещения, задав число точек для координаты точки y. В следующем примере кода используется число 16. Обратите внимание, что код является сложным, так как AutoScrollPosition смещается соответственно отрицательным значениям, однако предоставленные значения точек должны быть положительными.
Private Sub Form1_KeyDown(ByVal Sender As System.Object, _ ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown If e.KeyCode = System.Windows.Forms.Keys.Up Then Me.AutoScrollPosition = New Point(0, -Me.AutoScrollPosition.Y - 16) End If If e.KeyCode = System.Windows.Forms.Keys.Down Then Me.AutoScrollPosition = New Point(0, -Me.AutoScrollPosition.Y + 16) End If End Sub
private void Form1_KeyDown(object sender, KeyEventArgs e) { if ((e.KeyCode == System.Windows.Forms.Keys.Up)) { this.AutoScrollPosition = new Point(0, -this.AutoScrollPosition.Y - 16); } if ((e.KeyCode == System.Windows.Forms.Keys.Down)) { this.AutoScrollPosition = new Point(0, -this.AutoScrollPosition.Y + 16); }
Компиляция кода
Для этого примера требуются ссылки на следующие пространства имен:
См. также
Основные понятия
Разделы руководства по платформе .NET Compact Framework
Другие ресурсы
Разработка приложений для смартфонов и платформа .NET Compact Framework