Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ КПК ΠΈ смартфонов Π½Π° .NET Compact FrameworkΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 33

Автор АлСксандр Климов

Бвойство Mode позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ съСмки. ΠšΠ°ΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ‚ΠΎΠ°ΠΏΠΏΠ°Ρ€Π°Ρ‚, Ρ‡Ρ‚ΠΎ задаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ CameraCaptureMode.Still, ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊ. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ShowDialog, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Ρ€Π°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ OK, Ρ‚ΠΎ возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ DialogResult.OK. Имя Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ записываСтся Π² свойство FileName. Π’ листингС 10.17 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„ΠΎΡ‚ΠΎΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ.

Листинг 10.17

private void butPhotoMake_Click(object sender, EventArgs e) {

 CameraCaptureDialog cameraCaptureDialog = new CameraCaptureDialog();

 cameraCaptureDialog.Owner = this;

 cameraCaptureDialog.Title = "Π€ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„";

 cameraCaptureDialog.Mode = CameraCaptureMode.Still;

 if (cameraCaptureDialog.ShowDialog() == DialogResult.OK &&

  cameraCaptureDialog.FileName.Length > 0) {

  PictureBox.Image = new Bitmap(cameraCaptureDialog.FileName);

  MessageBox.Show("Бнято!");

 }

}

Для записи Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ способ, Π½ΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ съСмки. Π’Π°ΠΊ, для записи Π²ΠΈΠ΄Π΅ΠΎΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° вмСстС со Π·Π²ΡƒΠΊΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ VideoWithAudio. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ записи Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 10.18.

Листинг 10.18

private void butCaptureClick(object sender, EventArgs e) {

 CameraCaptureDialog cameraCapture = new CameraCaptureDialog();

 cameraCapture.Owner = null;

 cameraCapture.InitialDirectory = @"\My Documents":

 cameraCapture.DefaultFileName = @"test.3gp";

 cameraCapture.Title = "ΠšΠ°ΠΌΠ΅Ρ€Π° - ДСмонстрация";

 cameraCapture.VideoTypes = CameraCaptureVideoTypes.Messaging;

 cameraCapture.Resolution = new Size(176, 144);

 // Π›ΠΈΠΌΠΈΡ‚ Π² 10 сСкунд для Π²ΠΈΠ΄Π΅ΠΎ

 cameraCapture.VideoTimeLimit = new TimeSpan(0, 0, 10);

 cameraCapture.Mode = CameraCaptureMode.VideoWithAudio;

 if (DialogResult.OK == cameraCapture.ShowDialog()) {

  MessageBox.Show("ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ записаны Π²:\n{0}",

  cameraCapture.FileName);

 }

}

Π›Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° практичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹. БущСствуСт Π΅Ρ‰Π΅ Ρ€Π΅ΠΆΠΈΠΌ записи Π²ΠΈΠ΄Π΅ΠΎ Π±Π΅Π· Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ сопровоТдСния. Π’ этом случаС для свойства Mode задаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ CameraCaptureMode.VideoOnly. Если ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ShowDialog ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свойство DefaultFileName, Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ имя Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ имя Ρ„Π°ΠΉΠ»Π° для записи Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. Бвойство InitialDirectory позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ отснятыС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹. Бвойство Resolution позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ снимаСмого ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, Ρ‡Ρ‚ΠΎ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка ΠΊΠΎΠ΄Π°:

cameraCaptureDialog.Resolution = new Size(320, 240);

Бвойство StillQuality позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ качСство сТатия для Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ пСрСчислСния CameraCaptureStillQuality. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ значСния пСрСчислСны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ спискС:

β–‘ High β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π΅ качСство ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ сТатиСм;

β–‘ Normal β€” срСднСС качСство ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ;

β–‘ Low β€” высокая ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия, ΠΏΠ»ΠΎΡ…ΠΎΠ΅ качСство.

Бвойство VideoTimeLimit позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ записи Π²ΠΈΠ΄Π΅ΠΎΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ отсутствиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ограничСния. Π’ этом случаС запись съСмки Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ рСсурсы систСмы. Бвойство VideoTypes позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π²ΠΈΠ΄Π΅ΠΎΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. На устройствах ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows Mobile 5.0 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΈΠ΄Π΅ΠΎΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π΄Π²ΡƒΡ… Ρ‚ΠΈΠΏΠΎΠ² β€” Multimedia Messaging Service (MMS) ΠΈ Windows Media Video (WMV).

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ доступа ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Pocket Outlook Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΊΠ°Ρ€ΠΌΠ°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌ. Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π΄ΠΎ Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΡ…, ΠΎΠΏΠΈΡ€Π°ΡΡΡŒ ΡƒΠΆΠ΅ Π½Π° смартфоны. Π‘Π°ΠΌ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² останСтся практичСски Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ. Но ΠΏΡ€ΠΈ этом измСнится Π»ΠΎΠ³ΠΈΠΊΠ° управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² смартфонах сводится ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ событий для ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² мСню.

ВстрСчи

Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с использованиСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Pocket Outlook. На этот Ρ€Π°Π· Π½Π°Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ списку встрСч (Appointment). ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ изучСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ список событий ΠΈΠΌΠ΅Π΅Ρ‚ хотя Π±Ρ‹ ΠΎΠ΄Π½Ρƒ запись. Если Ρ‚Π°ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅Ρ‚, Ρ‚ΠΎ слСдуСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько записСй ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ПослС создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ Π½Π°Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ элСмСнт ListView. Бвойство View Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Details. Π’ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Columns Π½Π°Π΄ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π”Π°Ρ‚Π°, ВрСмя ΠΈ Π’Π΅ΠΌΠ° (рис. 10.12). ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго потрСбуСтся Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для экзСмпляра сСссии Outlook. Π‘Ρ€Π°Π·Ρƒ ΠΆΠ΅ послС Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° InitializeComponent Π² конструкторС Ρ„ΠΎΡ€ΠΌΡ‹ объявляСм экзСмпляр для сСссии PocketOutlook, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² листингС 10.19.

Рис. 10.12. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ прилоТСния

Листинг 10.19

private OutlookSession session;

public Form1() {

 InitializeComponent();

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ экзСмпляр сСссии Pocket Outlook

 session = new OutlookSession();

}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ программист ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» доступ ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ событий Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ OutlookSession. Для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Appointment создаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ пСрСмСнная, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС 10.20.

Листинг 10.20

private void menuAppointments_Click(object sender, EventArgs e) {

 AppAppts = session.Appointments.Items;

 // ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· всС элСмСнты ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

 foreach (Appointment appt in AppAppts) {

  // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ListViewItem

  lvItems = new ListViewItem();

  // РаздСляСм ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ

  lvItems.Text = appt.Start.ToShortDateString();

  lvItems.SubItems.Add(appt.Start.ToShortTimeString());

  lvItems.SubItems.Add(appt.Subject);

  // ДобавляСм Π² ListView

  lvContacts.Items.Add(lvItems);

 }

 // He Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ сСссию PocketOutlook

 session.Dispose();

}

Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°Ρ…. Но Π² этом случаС Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ повторяСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для КПК.

ΠžΡ‚ΡΡ‹Π»ΠΊΠ° письма

РассматриваСмый ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ элСктронноС письмо Π»ΡŽΠ±ΠΎΠΌΡƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ, Ρ‡ΡŒΡ запись присутствуСт Π² спискС ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹. ΠŸΡ€ΠΈ этом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΊ отправляСмому ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ Ρ„Π°ΠΉΠ».

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Π΄ΠΈΠ·Π°ΠΉΠ½Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊ ΠΊΠ°ΠΊ срСдства Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ Π² смартфонС довольно скудны, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ число Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ Π½Π° клавиши. НапримСр, ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ клавиша ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ПослС создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° SendEmailSmartphone_CS Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ Π½Π°Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ тСкстовоС ΠΏΠΎΠ»Π΅ txtContact, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ элСктронный адрСс.

Π’Π°ΠΊΠΆΠ΅ потрСбуСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. НуТно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° события menuSoftKey1_Click Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ SelectContact(). Π­Ρ‚ΠΎ дСлаСтся для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎΠ΄ свои Π½ΡƒΠΆΠ΄Ρ‹. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 10.21.

Листинг 10.21

private void SelectContact() {

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ экзСмпляр ΠΎΠΊΠ½Π° Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²

 ChooseContactDialog contactDial = new ChooseContactDialog();

 // Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²

 contactDial.HideNew = true;

 // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π½Π° экран

 if (contactDial.ShowDialog() == DialogResult.OK) {

  selContact = contactDial.SelectedContact;

  txtContact.Text = selContact.FileAs;

  menuSoftKey1.Text = ΠŸΠΎΡΠ»Π°Ρ‚ΡŒ;

 }

}

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° строку

menuSoftKey1.Text = "ΠŸΠΎΡΠ»Π°Ρ‚ΡŒ";

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ ΠΏΡƒΠ½ΠΊΡ‚ ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹, Π° Π·Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚, Ρ‚ΠΎ тСкст Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ мСню menuSoftKey1 мСняСтся Π½Π° строчку ΠŸΠΎΡΠ»Π°Ρ‚ΡŒ. Π’Π°ΠΊΠΆΠ΅ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ мСню для очистки тСкстовых ΠΏΠΎΠ»Π΅ΠΉ. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ письма. Надо ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Form1.cs Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π΅ Ρ„ΠΎΡ€ΠΌΡ‹. На ΠΏΡ€Π°Π²ΠΎΠΉ сторонС мСню ΠΊ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌΡƒΡΡ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ Π’Ρ‹Ρ…ΠΎΠ΄ слСдуСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ мСню ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ. Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ имя mnuClear. Код для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° mnuClear_Click ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 10.22.

Листинг 10.22

private void mnuClear_Click(object sender, EventArgs e) {

 txtContact.Text = string.Empty;

 menuSoftKey1.Text = "ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹";

}

Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ тСкстовоС ΠΏΠΎΠ»Π΅ ΠΈ Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ мСню menuSoftKey1 ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ строку ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ элСктронноС письмо. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сообщСниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ, входящих Π² состав Windows Mobile 5.0.

Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ письма ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ класс EmailMessage. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот класс Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π½Π°Π΄ΠΎ сначала ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ссылку Π½Π° пространство ΠΈΠΌΠ΅Π½ System.Messaging, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ мСню Projectβ–ΊAdd Reference. ПослС этого ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌ пространством ΠΈΠΌΠ΅Π½ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова using: