|
Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет: Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.
Как активировать код? |
Стандартные элементы управления
Событие Scroll генерируется в любом случае взаимодействия пользователя с полосой прокрутки, даже если тот пытается выйти за пределы диапазона. Это событие несет в себе намного больше информации о состоянии полосы прокрутки и действиях пользователя. Если мы подпишемся на это событие, то в обработчик будет передаваться объект ScrollEventArgs с информацией, которая находится в свойствах:
- OldValue - целое число, равное значению Value перед квантом взаимодействия пользователя с полосой прокрутки (только для чтения)
- NewValue - целое число, которое примет Value после того, как завершится обработка очередного события Scroll. Если в обработчике события Scroll прописать NewValue=OldValue, то полоса прокрутки не будет реагировать на действия пользователя, поскольку всегда будет возвращаться в исходное состояние. Свойство разрешено читать и писать. Если свойство NewValue изменять программно, то событие ValueChanged не генерируется, поскольку Value напрямую не меняется
- ScrollOrientation - переменная типа перечисления, которая может иметь одно из двух значений: HorizontalScroll и VerticalScroll. Доступно только для чтения и позволяет различить в общем обработчике события Scroll двух объектов HScrollBar и VScrollBar, от какого именно в обработчик поступила информация
- Type - это свойство является объектом перечисления ScrollEventType и может иметь одно из следующих 9 значений:
| - SmallDecrement = 0 | Мышь: | пользователь щелкнул на верхней (левой) кнопке со стрелкой |
| Клавиатура: | пользователь нажал "стрелку вверх" ("стрелку влево") | |
| - SmallIncrement = 1 | Мышь: | пользователь щелкнул на нижней (правой) кнопке со стрелкой |
| Клавиатура: | пользователь нажал "стрелку вниз " ("стрелку вправо") | |
| - LargeDecrement = 2 | Мышь: | пользователь щелкнул на верхней (левой) области между бегунком и кнопкой со стрелкой |
| Клавиатура: | пользователь нажал клавишу PageUp | |
| - LargeIncrement = 3 | Мышь: | пользователь щелкнул на нижней (правой) области между бегунком и кнопкой со стрелкой |
| Клавиатура: | пользователь нажал клавишу PageDown | |
| - ThumbPosition = 4 | Мышь: | пользователь отпустил бегунок |
| - ThumbTrack = 5 | Мышь: | пользователь захватил бегунок (или перемещает его) |
| - First = 6 | Клавиатура: | пользователь нажал клавишу Home |
| - Last = 7 | Клавиатура: | пользователь нажал клавишу End |
| - EndScroll = 8 | Прокрутка завершена | |
Если операционная система сильно загружена и скролируется большой объем информации, то часть событий полосы прокрутки может игнорироваться, но обязательно будет перехвачено последнее событие Scroll с признаком Type=EndScroll и значение Value станет равным NewValue.
Ниже приведен код программы с заблокированной полосой прокрутки ("Хоть видит око, но зуб не ймет" - Крылов, басня)
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Test
{
// Класс приложения
class MyClass : Form
{
// Создаем вертикальную полосу прокрутки, которую
// потом настроим и будем отслеживать
VScrollBar vScroll = new VScrollBar();
public MyClass() // Конструктор
{
// Текст заголовка окна
this.Text = "Заблокированная прокрутка";
// Привязываем к родителю-форме
vScroll.Parent = this;
// Устанавливаем параметры привязки полосы прокрутки
vScroll.Height = this.ClientSize.Height;
vScroll.Location = new Point(this.ClientSize.Width - vScroll.Width, 0);
// Регистрируем событие Scroll
vScroll.Scroll += new ScrollEventHandler(vScroll_Scroll);
}
void vScroll_Scroll(object sender, ScrollEventArgs e)
{
// Запрещаем изменение Value
e.NewValue = e.OldValue;
}
// На случай изменения размеров формы
protected override void OnSizeChanged(EventArgs e)
{
// Пересчитываем параметры привязки полосы прокрутки
vScroll.Height = this.ClientSize.Height;
vScroll.Location = new Point(this.ClientSize.Width -
vScroll.Width, 0);
}
}
// Запуск
class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new MyClass());
}
}
}
Листинг
15.3 .
Блокировка полосы прокрутки в обработчике события Scroll
Попробуйте запустить эту программу - полоса прокрутки не реагирует на действия пользователя.