Работа с адресной книгой
Работа с адресной книгой
В этом разделе будет рассмотрен пример, в котором будет добавлена новая запись в объект Контакты. Для этого надо, как и прежде, добавить в проект ссылки на соответствующие сборки Miсrosoft.WindowsMobile.Forms и Microsoft.WindowsMobilе.PocketOutlook. А в редакторе кода надо добавить объявления для пространств имен Microsoft.WindowsMobilе.Forms и Microsoft.WindowsMobile.PocketOutlook сразу после существующих объявлений.
Теперь можно обращаться к Контактам через объект OutlookSession. Чтобы добавить новый контакт в коллекцию Контакты, надо разместить на форме кнопку с именем butAddContact и написать код, приведенный в листинге 10.2.
Листинг 10.2
private OutlookSession session;
public Form1() {
InitializeComponent();
// Создаем экземпляр сессии Pocket Outlook
session = new OutlookSession();
}
private void butAddContact_Click(object sender, EventArgs e) {
Contact contact = new Contact();
contact.FirstName = "Билл";
contact.LastName = "Гейтс";
contact.Email1Address = "billgates@microsoft.com";
contact.Birthday = new DateTime(1955,10,28);
contact.CompanyName = "Microsoft";
contact.WebPage = new Uri("http://www.microsoft.com");
session.Contacts.Items.Add(contact);
}
Код очень прост и практически не требует комментариев. В начале работы создается переменная contact, в которой можно задавать самые различные параметры. В этом примере использовались только основные свойства. Были указаны имя, фамилия, электронный адрес, день рождения, имя компании и ее веб-страница. После того как новый контакт будет добавлен в список, нужно закрыть сессию при помощи метода Dispose().
После запуска приложения следует нажать кнопку Добавить в Контакты. В результате этого в списке Контакты появится новая запись (рис. 10.6)
Рис. 10.6. Просмотр списка контактов
Но разработчик может не только добавлять, но и получать информацию из имеющегося элемента списка. Для этого на форму надо поместить список lstContacts и кнопку butGetInfo. Прежде чем получить информацию о нужном нам человеке, нужно сначала получить сам список контактов. И только потом, выбрав из этого списка нужную запись, можно получить дополнительную информацию. Для получения полного списка контактов нужно добавить код в обработчик события Form_Load, как это показано в листинге 10.3.
Листинг 10.3
private void Form1_Load(object sender, EventArgs e) {
// Получаем список контактов
lstContacts.DataSource = session.Contacts.Items;
}
Теперь при загрузке формы список автоматически будет заполнен. Пользователь может выбрать любую запись и получить дополнительную информацию о выбранном контакте. Для этого в событии butGetInfo_Click создается код, приведенный в листинге 10.4.
Листинг 10.4
private void butGetInfo_Click(object sender, EventArgs e) {
// Получим информацию о выбранном контакте
session.Contacts.Items[lstContacts.SelectedIndex].ShowDialog();
}
Когда пользователь выделит интересующую его запись и нажмет кнопку Получить информацию, на экран будет выведено стандартное диалоговое окно с информацией о выбранной записи.
Удалить контакт из списка еще проще, чем создать его. На форму надо добавить еще одну кнопку butDelContact, с которой будет связан код, приведенный в листинге 10.5.
Листинг 10.5
private void butDelContactClick(object sender, EventArgs e) {
// Удаляем выбранный контакт
session.Contacts.Items[lstContacts.SelectedIndex].Delete();
}
Также из приложения можно вызвать стандартное окно выбора контакта, используемое программой Pocket Outlook. Теперь совсем не обязательно закрывать нашу программу и открывать окно контактов, как это было сделано при добавлении новой записи в список контактов.
Стандартное окно имеет некоторые дополнительные возможности, которые могут пригодиться разработчикам. Доступ к данному окну осуществляется через класс ChooseContactDialog, как показано в листинге 10.6.
Листинг 10.6
private void butShowContactsClick(object sender, EventArgs e) {
ChooseContactDialog contactDialog = new ChooseContactDialog();
// Прячем пункт меню Новый контакт
contactDialog.HideNew = true;
// Выводим диалоговое окна на экран
contactDialog.ShowDialog();
// Показываем выбранный контакт
MessageBox.Show(contactDialog.SelectedContactName, "Выбранный контакт");
}