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

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

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

На рис. 13.6 ΠΈ 13.7 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π΄Π²Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ нашСй мобильной ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΉ словарной ΠΈΠ³Ρ€Ρ‹. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ мСняСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ элСмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π½Π° экранС, Π½ΠΎ ΠΈ ΠΈΡ… Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. На рис. 13.6 тСкстовоС ΠΎΠΊΠ½ΠΎ динамичСски измСняСт свои Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, Π½Π°Ρ…ΠΎΠ΄ΡΡΡŒ Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ элСмСнтами экрана. 

Рис. 13.6. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹


На рис. 13.7 тСкстовоС ΠΎΠΊΠ½ΠΎ динамичСски измСняСт свои Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡŒ Π½ΠΈΠΆΠ΅ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ, находящихся Π½Π° экранС. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΠ±ΠΎΠΈΡ… случаях привязка располоТСния тСкстового ΠΎΠΊΠ½Π° ΠΊ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΌ Π΅Π³ΠΎ элСмСнтам осущСствляСтся ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· этих случаСв прСдусмотрСна своя Π»ΠΎΠ³ΠΈΠΊΠ°. Π‘Ρ‚ΠΎΠ»ΡŒ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ располоТСния ΠΈ упорядочСния элСмСнтов управлСния; ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ΄, отвСтствСнный Π·Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π°Π΄Π΅ΠΆΠ½ΠΎ абстрагирован ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ любоС ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ располоТСниС элСмСнтов Π½Π° экранС, выполняя Ρ‚Ρƒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, которая для этого Π½ΡƒΠΆΠ½Π°. ΠžΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ прилоТСния нашими экспСримСнтами Π½Π΅ затрагиваСтся.

НС ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ΅Π½ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ для обновлСния содСрТимого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΌΡ‹ создали абстрагированныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π΅ΡΡŒ ΠΊΠΎΠ΄, связанный с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ содСрТимого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, сосрСдоточСн Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π΅ ΠΈΠ»ΠΈ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… функциях, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ; нСпосрСдствСнноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ содСрТимого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² ΠΊΠΎΠ΄Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий для элСмСнтов управлСния Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ случаС Π½Π΅ выполняСтся.

Рис. 13.7. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹


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

ΠŸΠ΅Ρ€Π΅Π΄Π΅Π»ΠΊΠ° ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² листингС 13.1, для использования списка вмСсто ΠΊΠ½ΠΎΠΏΠΎΠΊ мноТСствСнного Π²Ρ‹Π±ΠΎΡ€Π° Π½Π΅ составляСт особого Ρ‚Ρ€ΡƒΠ΄Π°. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π±Ρ‹ внСсти Π΅Ρ‰Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния Π² ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Π½ΠΎ Π² силу Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° прилоТСния ΠΈ ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π½Π°Π΄Π΅ΠΆΠ½ΠΎ инкапсулированы, Π° взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² извСстном Π½Π°Π±ΠΎΡ€Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ пСрСносу прилоТСния Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ особых Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΈΠΉ. Π’Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ продуманная инкапсуляция, абстрагированиС ΠΈ цСнтрализация ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов для Π»ΡŽΠ±Ρ‹Ρ… классов устройств с Π³ΠΎΡ€Π°Π·Π΄ΠΎ большСй Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ, Ρ‡Π΅ΠΌ Π² случаС Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π±Π΅Π· использования ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΄Π²Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ прилоТСния

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС 13.1 ΠΊΠΎΠ΄ вносится Π² Ρ„ΠΎΡ€ΠΌΡƒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Pocket PC. Для создания ΠΈ запуска прилоТСния потрСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

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. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ элСмСнтов управлСния ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ. ВСроятно, Ρ‡Π°ΡΡ‚ΡŒ элСмСнтов управлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈΠΌΠ΅Π»ΠΎ Π±Ρ‹ смысл ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля, Π° Ρ‡Π°ΡΡ‚ΡŒ β€” Π½ΠΈΠΆΠ΅. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” справа ΠΈΠ»ΠΈ слСва ΠΎΡ‚ Π½Π΅Π³ΠΎ. Внося ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния Π² ΠΊΠΎΠ΄ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°, Π²Ρ‹ Π»Π΅Π³ΠΊΠΎ смоТСтС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ свои прСдполоТСния.

Листинг 13.1. ИспользованиС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° для экспСримСнтов с двумя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса

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

//ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΎΠΊ, Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ€ΡƒΠΊΠΎΠΉ

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


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 //ΠŸΠžΠ›Π• Π˜Π“Π Π« располагаСтся Π½Π°Π΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ