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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ .NET Compact FrameworkΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 143

Автор Иво Π‘Π°Π»ΠΌΡ€Π΅

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Ρ†Π΅Π»ΡŒΡŽ Π΅Π³ΠΎ упрощСния, Π½ΠΎ вряд Π»ΠΈ встрСтятся Π²Π°ΠΌ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… прилоТСниях для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств:

1. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… формируСтся Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Если Π±Ρ‹ Π²ΠΎ врСмя проСктирования Π½Π°ΠΌ Π±Ρ‹Π»ΠΈ извСстны всС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π²ΠΎ врСмя выполнСния, Ρ‚ΠΎ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π²ΠΎ внСшнСй Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π»Π° Π±Ρ‹ нСбольшой; ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ достаточно Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ структуры Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти нСпосрСдствСнно Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ сопряТСна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° любой Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ вСрсии Π΄Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния ΠΌΡ‹ создали Π±Ρ‹ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ²: Π°) Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π² устройство Ρ„Π°ΠΉΠ»Π° ΡƒΠΆΠ΅ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ создали; Π±) синхронизация Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… SQL Π‘Π• с сСрвСрным Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ SQL-сСрвСра; ΠΈ Π²) Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ СдинствСнного прилоТСния Π±Π΅Π· сохранСния Π΄Π°Π½Π½Ρ‹Ρ… созданной ΠΈ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΈΠΌ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

2. Π’ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ сразу всС Π΄Π°Π½Π½Ρ‹Π΅. Как Π²Ρ‹ΡˆΠ΅ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ для нашСго прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ большиС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹. Если Π±Ρ‹ наша Π±Π°Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π»Π° 20000 слов, Ρ‚ΠΎ, вСроятно, ΠΌΡ‹ Π½Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ всС эти слова ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ этого Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ½ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с нСбольшим Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… слов. ΠœΡ‹ Π±Ρ‹ просто Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π΅Π», ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ количСство слов, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ; Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ пСриодичСски ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ встроСнный Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ кэш Π½ΠΎΠ²Ρ‹ΠΌΠΈ словами. НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π² словарС, хранящСмся Π² памяти, Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 500 слов ΠΈΠ· ΠΏΠΎΠ»Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… словаря, Π½Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ 20 000 слов, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ 1 Π΄ΠΎ 40 слов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΠΉ считываниС слов Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΎΡΡŒ, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ составляла 1/40. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ стратСгии ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ количСства слов, Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π² памяти, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ слов Π² родствСнныС Π½Π°Π±ΠΎΡ€Ρ‹, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, простыС слова, слова ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ трудности, особо Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹Π΅ слова). Π’ любом случаС ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ нашС мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ располагало систСмой управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, которая Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»Π° Π±Ρ‹, Ρ‡Ρ‚ΠΎ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ загруТаСтся лишь ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство слов, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅ прСдсказуСмым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС 14.5 ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Ρ„ΠΎΡ€ΠΌΡƒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Pocket PC. Код Π² листингах 14.6, 14.7 ΠΈ 14.8 прСдставляСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ классы. Для создания ΠΈ выполнСния прилоТСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

1. ЗапуститС Visual Studio .NET (2003 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ позднюю Π²Π΅Ρ€ΡΠΈΡŽ) ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² качСствС Ρ‚ΠΈΠΏΠ° прилоТСния C# Smart Device Application.

2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² качСствС Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Pocket PC. (Для вас Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски создан ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈ Π½Π° экранС появится ΠΎΠΊΠ½ΠΎ конструктора Ρ„ΠΎΡ€ΠΌ Pocket PC.)

3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ссылку Π½Π° класс SqlServerCE. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° ΡƒΠ·Π»Π΅ References Π² элСмСнтС управлСния TreeView Π² ΠΎΠΊΠ½Π΅ Solution Explorer, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Ρ€Π°Π² элСмСнт System.Data. SqlServerCe.

Π­Ρ‚Π° ссылка позволяСт Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы ΠΈΠ· сборки System.Data.SqlServerCe, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΌ доступ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ SQLCE

4. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Ρ„ΠΎΡ€ΠΌΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты управлСния:

 Π°. ΠšΠ½ΠΎΠΏΠΊΡƒ (Button), ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π² Π΅Π΅ Π² buttonCreateDataBase.

 Π±. ΠšΠ½ΠΎΠΏΠΊΡƒ (Button), ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π² Π΅Π΅ Π² buttonLoadGameData

 Π². ВСкстовоС ΠΎΠΊΠ½ΠΎ (TextBox), оставив автоматичСски присвоСнноС Π΅ΠΌΡƒ имя textBox1.

5. УстановитС для свойства MultiLine элСмСнта управлСния TextBox Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true.

6. УстановитС для свойства ScrollBar элСмСнта управлСния TextBox Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ vertical.

7. Π”ля ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия. Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² ΠΎΠΊΠ½Π΅ конструктора Ρ„ΠΎΡ€ΠΌ. Π’ автоматичСски сгСнСрированной ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ button<ИмяКнопки>_Click() ΠΈΠ· листинга 14.5.

8. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ для свойства MinimizeBox Ρ„ΠΎΡ€ΠΌΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false. Благодаря этому Π²ΠΎ врСмя выполнСния Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΏΡ€Π°Π²ΠΎΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹ появится ΠΊΠ½ΠΎΠΏΠΊΠ° OK, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π»Π΅Π³ΠΊΠΎ смоТСтС Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· прилоТСния. Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ оказываСтся ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΏΡ€ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΌ тСстировании прилоТСния.

9. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ класс DatabaseAccess, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΈΠ· Π½Π΅Π³ΠΎ вСсь Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠ΄ Π² ΠΎΠΊΠ½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° класса, ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ вмСсто Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΈΠ· листинга 14.6.

10. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ класс GameData, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΈΠ· Π½Π΅Π³ΠΎ вСсь Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠ΄ Π² ΠΎΠΊΠ½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° класса, ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ вмСсто Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΈΠ· листинга 14.7.

11. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ класс VocabularyWord, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΈΠ· Π½Π΅Π³ΠΎ вСсь Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠ΄ Π² ΠΎΠΊΠ½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° класса, ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ вмСсто Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΈΠ· листинга 14.8.

12. Π—апуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΆΠ°Π² ΠΊΠ»Π°Π²ΠΈΡˆΡƒ <F5>. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс прилоТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 14.4. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ buttonCreateDatabase для создания ΠΈ наполнСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… SQL Π‘Π•. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ buttonGameData с Ρ†Π΅Π»ΡŒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ содСрТимого Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования; Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ этого Π² тСкстовом ΠΎΠΊΠ½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ слова ΠΈΠ· словаря.

Рис. 14.4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² DataSet


Листинг 14.5. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ β€” ΠΊΠΎΠ΄, ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Π² Ρ„ΠΎΡ€ΠΌΡƒ Form1.cs

//Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…

private void buttonCreateDatabase_Click(object sender, System.EventArgs e) {

 DatabaseAccess.CreateAndFillDatabase();

}


//Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΡ…

private void buttonLoadGameData_Click(object sender, System.EventArgs e) {

 //ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ тСкстовоС ΠΎΠΊΠ½ΠΎ

 textBox1.Text = "";

 //Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ для слов

 GameData.InitializeGameVocabulary();

 //ΠžΠ±ΠΎΠΉΡ‚ΠΈ всС слова ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π² тСкстовый список

 System.Text.StringBuilder thisStringBuilder;

 thisStringBuilder = new System.Text.StringBuilder();


 foreach (VocabularyWord thisWord in GameData.AllWords) {

  thisStringBuilder.Append(thisWord.EnglishWord);

  thisStringBuilder.Append(" = ");

  thisStringBuilder.Append(thisWord.GermanWordWithArticleIfExists);

  thisStringBuilder.Append("\r\n"); //Новая строка

 }

 //ΠžΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ список слов Π² тСкстовом ΠΎΠΊΠ½Π΅

 textBox1.Text = thisStringBuilder.ToString();

}

Листинг 14.6. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для DatabaseAccess.cs

//------------------------------------------------------------

//Код доступа ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

//

//Π­Ρ‚ΠΎΡ‚ класс управляСт доступом ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

//------------------------------------------------------------

using System;

internal class DatabaseAccess {

 const string DATABASE_NAME = "LearnGerman.sdf";

 const string CONNECT_STRING = "Data Source = " + DATABASE_NAME + "; Password = ''";

 const string TRANSLATIONTABLE_NAME = "TranslationDictionary";

 const string TRANSLATIONTABLE_ENGLISH_COLUMN = "EnglishWord";

 const string TRANSLATIONTABLE_GERMAN_COLUMN = "GermanWord";

 const string TRANSLATIONTABLE_GERMANGENDER_COLUMN = "GermanGender";

 const string TRANSLATIONTABLE_ WORDFUNCTION_COLUMN = "WordFunction";

 internal const int DS_WORDS_COLUMNINDEX_ENGLISHWORD = 0;

 internal const int DS_WORDS_COLUMNINDEX_GERMANWORD = 1;

 internal const int DS_WORDS_COLUMNINDEX_GERMANGENDER = 2;

 internal const int DS_WORDS_COLUMNINDEX_WORDFUNCTION = 3;


 static public System.Data.IDataReader GetListOfWords() {

  System.Data.SqlServerCe.SqlCeConnection conn = null;

  conn = new System.Data.SqlServerCe.SqlCeConnection(CONNECT_STRING);

  conn.Open();

  System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand();


  cmd.ConmandText = "select " +

   TRANSLATIONTABLE_ENGLISH_COLUMN + ", " +

   TRANSLATIONTABLE_GERMAN_COLUMN + ", " +

   TRANSLATIONTABLE_GERMANGENDER_COLUMN + ", " +

   TRANSLATIONTABLE_WORDFUNCTION_COLUMN + " " + "from " +

   TRANSLATIONTABLE_NAME;


  //Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

  System.Data.SqlServerCe.SqlCeDataReader myReader =

   cmd.ExecuteReader(System.Data.CommandBehavior.SingleResult);

  return myReader;

 }


 //------------------------------------------

 //Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² случаС нСобходимости

 //------------------------------------------

 static public void CreateDatabaseIfNonExistant() {

  if (System.IO.File.Exists(DATABASE_NAME) == false) {

   CreateAndFillDatabase();

  }

 }


 //---------------------------------------

 //Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΈ наполняСт Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…

 //---------------------------------------

 static public void CreateAndFillDatabase() {

  //Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Ссли ΠΎΠ½Π° ΡƒΠΆΠ΅ сущСствуСт

  if (System.IO.File.Exists(DATABASE_NAME)) {

   System.IO.File.Delete(DATABASE_NAME);

  }


  //Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ