- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Программирование КПК и смартфонов на .NET Compact Framework - Александр Климов
Шрифт:
Интервал:
Закладка:
Теперь если стилусом активировать текстовое поле, то автоматически будет отображена виртуальная клавиатура. Если на появившейся клавиатуре нажать клавишу Tab или щелкнуть на кнопке с надписью Просто кнопка, то панель ввода автоматически свернется.
Элемент InputPanel поддерживает событие EnabledChanged, которое возникает при активации и деактивации панели ввода С его помощью можно расширить функциональность примера. Следует добавить еще одно текстовое поле в нижнюю часть формы. Сейчас нужно отследить событие EnabledChanged и отреагировать на него должным образом. При активации панели ввода текстовое поле должно сдвинуться вверх, чтобы пользователь мог ввести свои данные. Пример обработки этого события приведен в листинге 3.24.
Листинг 3.24private void inputPanel1_EnabledChanged(object sender,EventArgs e) {
// Отслеживаем состояние панели ввода
// Свойство Bounds возвращает размеры и позицию SIP
if (inputPanel1.Enabled == true)
this.txtJump.Top = 200 — inputPanel1.Bounds.Height;
else
this.txtJump.Top = 200;
}
На рис. 3.15 показан внешний вид окна тестового приложения.
Рис. 3.15. Пример работы с элементом InputPanel
В этом примере позиция текстового поля была подобрана опытным путем, но в реальных проектах разработчик может программно вычислить высоту формы, панели ввода, текстового поля и других элементов формы, чтобы более точно определить позицию сдвига.
Элемент управления DataGrid
Элемент управления DataGrid позволяет отображать данные в виде таблицы, как это сделано в электронной таблице MS Excel. Как и многие другие элементы управления, он имеет обрезанные возможности по сравнению с полной версией .NET Framework. Например, отключена поддержка свойства DataMember.
Элемент управления DataGrid может быть связан с источниками данных при помощи свойства DataSource. Рассмотрим простейший пример работы с данным элементом. Прежде всего, потребуется создать XML-файл, содержащий некоторые данные. Для примера был использован файл artists.xml, в котором содержится информация о некоторых известных артистов шоу-бизнеса. Файл содержит записи о фамилии, дате рождения и адресе проживания. Созданный файл нужно добавить в проект, расположить на форме элемент DataGrid и присвоить ему имя grdArtists. В листинге 3.25 приведен код обработчика события Form1_Load.
Листинг 3.25private void Form1_Load(object sender, EventArgs e) {
Cursor.Current = Cursors.WaitCursor;
try {
// Загружаем данные DataSet
DataSet ds = new DataSet();
ds.ReadXml(@"Program FilesDataGrid_CSartists.xml");
grdArtists.DataSource = ds.Tables[0];
} catch (Exception) {
MessageBox.Show("Не могу загрузить данные в DataGrid!", this.Text);
}
// Устанавливаем стили
DataGridTableStyle ts = new DataGridTableStyle();
ts.MappingName = "Order";
DataGridColumnStyle artistDate = new DataGridTextBoxColumn();
artistDate.MappingName = "BirthDate";
artistDate.HeaderText = "Дата рождения";
ts.GridColumnStyles.Add(artistDate);
DataGridColumnStyle artistName = new DataGridTextBoxColumn();
artistName.MappingName = "ArtistName";
artistName.HeaderText = "Артист";
artistName.Width = this.Width - artistDate.Width - 35;
ts.GridColumnStyles.Add(artistName);
grdArtists.TableStyles.Add(ts);
Cursor.Current = Cursors.Default;
}
В данном примере из XML-файла извлекаются данные, относящиеся к фамилии артиста и дате его рождения. Остальная информация игнорируется. При загрузке приложения в элемент DataGrid записываются требуемые данные. На рис. 3.16 показан внешний вид приложения.
Рис. 3.16. Пример работы с элементом DataGrid
Также стоит прочитать статью «Using the DataGrid Control in Pocket PC Applications», которую можно найти в справочной системе MSDN. В этой статье иллюстрируются различные приемы программирования, которые помогут расширить возможности данного элемента.
Элемент Splitter
Элемент управления Splitter появился только в .NET Compact Framework 2.0. В предыдущей версии его не было. Этот элемент реализует разделитель, который используется для изменения размеров закрепленных элементов управления во время выполнения программы. Элемент Splitter обычно используется вместе с элементами управления, содержащими данные переменной длины.
Стоит рассмотреть работу данного элемента на конкретном примере. На форме следует расположить графическое поле PictureBox и присвоить его свойству Dock значение Top. Затем на форме надо расположить объект Splitter и его свойству Dock тоже присвоить значение Top. Также следует расположить на форме текстовое поле TextBox. Его свойству Multiline надо присвоить значение True, а свойству Dock — значение Fill. Внешний вид получившегося приложения показан на рис. 3.17.
Рис. 3.17. Применение элемента Splitter в приложении
Даже без единой строчки написанного кода запущенное приложение будет вполне функционально. Если нужно увеличить область текстового поля для ввода новых данных, то достаточно нажать стилусом на разделителе и передвинуть его чуть выше.
Элемент MonthCalendar
Элемент управления MonthCalendar появился только в последней версии .NET Compact Framework 2.0. Данный элемент позволяет легко выбрать необходимую дату.
Для создания тестового приложения на форме надо разместить элементы MonthCalendar и Label. Метка должна получить имя lblSelectDate, а для свойства Text нужно задать значение Выбранная дата. Затем следует дважды щелкнуть на элементе monthCalendar1, чтобы задать код обработчика события DateChanged. Этот код приведен в листинге 3.26.
Листинг 3.26private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e) {
lblSelectDate.Text =
"Выбранная дата: " + monthCalendar1.SelectionStart.ToShortDateString();
}
Теперь можно запустить приложение и выбрать любую дату из месячного календаря. Выбранная дата будет автоматически отображаться в надписи lblSelectDate, как показано на рис. 3.18.
Рис. 3.18. Выбираем дату из месячного календаря
Элемент DateTimePicker
Элемент управления DateTimePicker также является новым элементом, который появился в .NET Compact Framework 2.0. Он позволяет выбирать не только дату, но и время.
На форме надо разместить элемент DateTimePicker и две текстовые метки Label, в которых будут отображаться дата и время. Затем нужно дважды щелкнуть на элементе DateTimePicker, чтобы задать код обработчика события ValueChanged. Этот код приведен в листинге 3.27.
Листинг 3.27private void dateTimePicker1_ValueChanged(object sender, EventArgs e) {
lblDate.Text = "Дата: " + dateTimePicker1.Value.ToShortDateString();
lblTime.Text = "Время: " + dateTimePicker1.Value.ToShortTimeString();
}
Внешний вид получившегося приложения показан на рис. 3.19.
Рис. 3.19. Выбор даты при помощи элемента DateTimePicker
В документации MSDN есть небольшая статья «How to: Use the DateTimePicker Class in the .NET Compact Framework», в которой приводится небольшой пример использования этого элемента. Поддержка данного элемента появилась и в смартфонах под управлением Windows Mobile 5.0. Но в этом случае внешний вид элемента будет несколько иным.
Элемент DocumentList
Новый элемент управления DocumentList, который появился в .NET Compact Framework 2.0, может заменить такие элементы, как SaveFileDialog и OpenFileDialog, так как имеет все необходимые средства для работы с файлами. Помимо этого элемент DocumentList имеет дополнительные возможности, которые наверняка понравятся разработчикам программ. Он позволяет очень просто реализовать основные задачи манипулирования файлами, к которым относятся копирование, удаление, переименование и перемещение файлов. С помощью этого элемента также можно сортировать файлы по имени, дате создания, размеру. Кроме того, существует даже возможность посылать файлы по электронной почте или передавать на другое устройство при помощи инфракрасной связи.
Элемент DocumentList работает с файлами в пределах папки My Documents, включая подпапки. Следует обратить внимание на то, что DocumentList является классом из пространства Microsoft.WindowsCE.Forms и не является частью полной версии .NET Framework. Поэтому есть смысл поближе познакомиться с данным элементом.
Для разработки тестового приложения сначала потребуется создать новый проект, а затем переместить на форму элемент DocumentList. Для свойства Name надо задать значение DocListFile, свойство Dock должно получить значение Top, свойству Height присваивается значение 160, а для свойства SelectedDirectory задается значение My Documents.

