Книга: Программирование КПК и смартфонов на .NET Compact Framework
Прокручивание формы
Разделы на этой странице:
Прокручивание формы
Если форма не умещается на экране целиком, то пользователь может прокрутить ее стилусом с помощью полос прокрутки. Особенно это полезно, если учесть, что .NET Compact Framework 2.0 теперь поддерживает свойство AutoScroll
. Но смартфоны не имеют сенсорного экрана, реагирующего на стилус. Для прокрутки формы надо искать другой вариант.
Например, можно воспользоваться обработкой события KeyDown
. В тестовом проекте надо растянуть форму так, чтобы нижнюю часть не было видно на экране смартфона. На форме надо разместить несколько надписей, причем одна из них должна располагаться в нижней части формы. Для свойства формы AutoScroll
надо задать значение True
. В листинге 9.5 приведен пример кода для прокрутки формы.
Листинг 9.5
private void Form1_KeyDown(object sender, KeyEventArgs e) {
if ((e.KeyCode == System.Windows.Forms.Keys.Up)) {
// Up
this.AutoScrollPosition =
new Point(-this.AutoScrollPosition.X, -this.AutoScrollPosition.Y - 16);
}
if ((e.KeyCode == System.Windows.Forms.Keys.Down)) {
// Down
this.AutoScrollPosition =
new Point(-this.AutoScrollPosition.X, -this.AutoScrollPosition.Y + 16);
}
if ((e.KeyCode == System.Windows.Forms.Keys.Left)) {
// Left
this.AutoScrollPosition =
new Point(-this.AutoScrollPosition.X - 16, -this.AutoScrollPosition.Y);
}
if ((e.KeyCode == System.Windows.Forms.Keys.Right)) {
// Right
this.AutoScrollPosition =
new Point(-this.AutoScrollPosition.X + 16, -this.AutoScrollPosition.Y);
}
}
После запуска приложения можно нажимать на клавиши навигации. Написанный код позволит прокручивать форму в выбранном направлении. Но здесь нас подстерегает одна опасность. Код будет работать лишь тогда, когда форма имеет фокус. Если форма содержит элементы управления, то фокус может находиться у данного элемента. И тогда нажатия на клавиши навигации не принесут желаемого результата. Это ограничение легко обходится добавлением соответствующего обработчика события, как показано в листинге 9.6.
Листинг 9.6
private void Form1_Load(object sender, EventArgs e) {
pictureBox1.Focus();
this.pictureBox1.KeyDown += new KeyEventHandler(Form1_KeyDown);
}
Теперь, даже если фокус находится не у формы, пользователь все равно сможет прокручивать форму при помощи клавиш навигации.
- Глава 5 Агрессивные формы кода и борьба с ними
- 2.5. Активная и пассивная формы интеллектуальной деятельности
- Формы Web ASP.NET
- Разработка формы
- 6. Улучшенные формы
- Лекция 3. Формы и циклы
- Урок 7.6. Формы и отчеты
- Прикрепление ключей формы
- Листинг 13.6. Код формы, демонстрирующий загрузку встроенных ресурсов
- Глава 5 «Малые» формы рекламы в Интернете
- 9.1. Создание формы
- Две формы представления сетевого графика