Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework
- Название:Программирование мобильных устройств на платформе .NET Compact Framework
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2006
- Город:Москва • Санкт-Петербург • Киев
- ISBN:5-8459-0989-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework краткое содержание
Книга известного профессионала в области компьютерных технологий посвящена разработке приложений для широкого спектра мобильных устройств с использованием популярной и постоянно развивающейся платформы .NET Compact Framework. Уникальность этой книги состоит в том, что в ней гармонично переплетены теоретические сведения обо всем цикле разработки программного обеспечения с практическими примерами применения на языках С# и Visual Basic. Подробно рассматриваются концепции, лежащие в основе самой платформы .NET Compact Framework, а также вопросы, связанные с созданием эффективного пользовательского интерфейса, управлением памятью, производительностью и надежностью. Немалое внимание уделяется практическим аспектам разработки приложений для мобильных устройств, среди которых выбор модели представления и доступа к данным, внедрение коммуникационной модели, реализация модели поведения с помощью конечных автоматов и использование XML.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.
Программирование мобильных устройств на платформе .NET Compact Framework - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
1. Запустите Visual Studio .NET (2003 или более позднюю версию) и выберите в качестве типа приложения C# Smart Device Application.
2. Выберите в качестве целевой платформы Pocket PC. (Для вас будет автоматически создан проект, и на экране появится окно конструктора форм Pocket PC.)
3. Добавьте в форму перечисленные ниже элементы управления. Примечание. Пусть вас не волнуют точные размеры и расположение этих элементов управления; разместите их так, чтобы вам было удобно работать с ними на экране. Размеры и расположение элементов управления динамически изменяются во время выполнения приведенным ниже кодом пользовательского интерфейса.
• TextBox; переименуйте его в textBoxAskQuestion, установите значение true для его свойств MultiLine и ReadOnly.
• PictureBox; переименуйте его в pictureBoxGameBoard.
• Button; переименуйте его в buttonShowAnswers_AdvancedVersion.
• Button; переименуйте его в buttonShowAnswers_SimpleVersion.
• Button; переименуйте его в buttonAskQuestion.
• Button; переименуйте его в buttonAnswer0.
• Button; переименуйте его в buttonAnswer1.
• Button; переименуйте его в buttonAnswer2.
• Button; переименуйте его в buttonAnswer3.
• Button; переименуйте его в buttonAnswer4.
• Button; переименуйте его в buttonAnswer5.
4. Дважды щелкните на пустом участке формы в окне конструктора форм и введите приведенный ниже код Form_Load в автоматически сгенерированную и подключенную функцию обработчика событий.
5. Поочередно переходя от одной из вышеперечисленных кнопок Button к другой, щелкните на кнопке в окне конструктора форм. Введите приведенный ниже код button< ИмяКнопки>_ Click в автоматически сгенерированную и подключенную функцию обработчика событий.
6. Введите оставшуюся часть приведенного ниже кода.
7. Установите для свойства MinimizeBox формы значение false. Благодаря этому во время выполнения приложения в верхней правой части формы появится кнопка OK, с помощью которой вы сможете легко закрыть форму и выйти из приложения. Эта возможность оказывается очень полезной при многократном тестировании приложения
8. В самом верху файла кода формы введите в качестве первой строки #define PLAYFIELD_ON_BOTTOM.
9. Дважды запустите приложение: один раз с подключенной директивой условной компиляции #define PLAYFIELD_ON_BOTTOM, а второй — с предварительным отключением этой же директивы при помощи символов комментария (то есть //#define PLAYFIELD_ON_BOTTOM), и отметьте для себя различия между двумя моделями компоновки. Запустите оба варианта на физическом устройстве и выясните, какая модель является более предпочтительной с точки зрения внешнего вида приложения и удобства работы с ним, а также возможностей обзора игрового поля.
10. Попробуйте изменить компоновку элементов управления по своему усмотрению. Вероятно, часть элементов управления пользовательского интерфейса имело бы смысл поместить выше игрового поля, а часть — ниже. Возможно, некоторые элементы должны располагаться поверх игрового поля, тогда как другие — справа или слева от него. Внося соответствующие изменения в код конечного автомата, вы легко сможете проверить и уточнить свои предположения.
//--------------------------------------------------------------------------
//Конечный автомат, который управляет отображением кнопок, закрываемых рукой
//--------------------------------------------------------------------------
private enum GameUIState {
startScreen = 1,
waitForNextQuestion = 2,
waitForUserToStateKnowledge = 4,
waitForUserToAnswerMultipleChoice = 8
}
//Текущее состояние игры
private GameUIState m_GameUIState;
//==========================================================================
//Конечный автомат, используемый для управления пользовательским интерфейсом
//==========================================================================
private void StateChangeForGameUI(GameUIState newGameUIState) {
m_GameUIState = newGameUIState;
switch (newGameUIState) {
case GameUIState.startScreen:
buttonAskQuestion.Visible = true;
buttonAskQuestion.Text = "Start";
//Скрыть текстовое окно
textBoxAskQuestion.Visible = false;
SetAnswerButtonVisibility(false);
SetDifficultyButtonVisibility(false);
break;
case GameUIState.waitForNextQuestion:
setQuestionText("List answer details here... \r\n" +
"Lots of space to write...\r\n" +
"Waiting for user to select next question...");
textBoxAskQuestion.Visible = true;
buttonAskQuestion.Text = "Next";
buttonAskQuestion.Visible = true;
//Убедиться в том, что кнопка отображается на переднем плане
buttonAskQuestion.BringToFront();
SetAnswerButtonVisibility(false);
SetDifficultyButtonVisibility(false);
#if PLAYFIELD ON_BOTTOM //ПОЛЕ ИГРЫ располагается под пользовательскими
//элементами управления
textBoxAskQuestion.Height = pictureBoxGameBoard.Top - 2;
#else //ПОЛЕ ИГРЫ располагается над пользовательскими
//элементами управления
textBoxAskQuestion.Top = pictureBoxGameBoard.Top + pictureBoxGameBoard.Height + 2;
textBoxAskQuestion.Height = this.Height - textBoxAskQuestion.Top;
#endif
break;
case GameUIState.waitForUserToStateKnowledge:
SetTextForVocabularyQuestion();
textBoxAskQuestion.Visible = true;
buttonAskQuestion.Visible = false;
SetAnswerButtonVisibility(false);
SetDifficultyButtonVisibility(true);
#if PLAYFIELD_ON_BOTTOM //ПОЛЕ ИГРЫ располагается под пользовательскими
//элементами управления
textBoxAskQuestion.Height = buttonShowAnswers_AdvancedVersion.Top - 2;
#else //ПОЛЕ ИГРЫ располагается над пользовательскими
//элементами управления
textBoxAskQuestion.Top = buttonShowAnswers_AdvancedVersion.Top + buttonShowAnswers_AdvancedVersion.Height + 2;
textBoxAskQuestion.Height = this.Height - textBoxAskQuestion.Top;
#endif
break;
case GameUIState.waitForUserToAnswerMultipleChoice:
buttonAskQuestion.Visible = false;
SetDifficultyButtonVisibility(false);
//Сделать кнопки доступными, чтобы пользователь мог щелкать на них
SetAnswerButtonEnabled(true);
SetAnswerButtonVisibility(true);
#if PLAYFIELD_ON_BOTTOM //ПОЛЕ ИГРЫ располагается под пользовательскими
//элементами управления
textBoxAskQuestion.Height = buttonAnswer0.Top - 2;
#else //ПОЛЕ ИГРЫ располагается над пользовательскими
//элементами управления.
//Разместить текстовое окно таким образом, чтобы экран использовался
//эффективно
textBoxAskQuestion.Top = buttonAnswer5.Top + buttonAnswer5.Height + 2;
textBoxAskQuestion.Height =this.Height - textBoxAskQuestion.Top;
#endif
break;
//======================================================================
//Задать статическую компоновку нашего пользовательского интерфейса.
//Сюда входят все элементы, позиции которых остаются фиксированными.
//Изменения в остальные свойства внесет конечный автомат
//пользовательского интерфейса
//======================================================================
private void SetStartControlPositionAndState() {
pictureBoxGameBoard.Width = 240;
pictureBoxGameBoard.Height = 176;
//Установить размеры кнопок множественного выбора вариантов ответов
Интервал:
Закладка: