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


Практическое руководство. Прокрутка подписей формы

Обновлен: Ноябрь 2007

Так как элемент управления Label не получает фокус и не поддерживает выделение с помощью клавиши TAB, приложение смартфона, состоящее только из элементов управления Label, не позволяет пользователю выполнять навигацию по надписям вне отображаемой клиентской области формы. Пользователь приложения карманного ПК может выбрать полосу прокрутки для навигации, но эта возможность недоступна в смартфоне.

Можно реализовать навигацию с помощью кода в обработчике событий для события KeyDown, которое изменяет значение свойства AutoScrollPosition.

Чтобы выполнить прокрутку в форме элементов управления "Подпись"

  1. Добавьте несколько элементов управления Label к форме так, чтобы они располагались ниже видимой клиентской области. Используйте клавиши со стрелками в конструкторе Microsoft Visual Studio 2005 или напишите код инициализации для их позиционирования.

  2. В конструкторе формы установите для свойств KeyPreview и AutoScroll значение true. Пользователи C# должны присоединить делегат для обработчика событий KeyDown.

    Me.KeyPreview = True
    Me.AutoScroll = True
    
    this.KeyPreview = true;
    this.KeyDown += new KeyEventHandler(Form1_KeyDown);
    this.AutoScroll = true;
    
  3. Установите свойство 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