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

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

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

β–  Когда Π½Π° стадии проСктирования Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ количСство Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… элСмСнтов управлСния Π½Π΅ извСстно.  НапримСр, Ссли Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ трСбуСтся массив ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ, количСство ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит ΠΎΡ‚ количСства элСмСнтов, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ запроса ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Π²Π°ΠΌ приходится ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ этот массив Π²ΠΎ врСмя выполнСния, ΠΊΠΎΠ³Π΄Π° количСство ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ становится извСстным.

β–  Когда для элСмСнта управлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π΅ сущСствуСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° стадии проСктирования.  ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с .NET Compact Framework созданиС экзСмпляров ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния Π½Π° стадии проСктирования ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трудности; Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ этого часто ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ Ссли Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для элСмСнтов управлСния ΠΈΡ… вСрсиями Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Если Π²Ρ‹ создаСтС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ элСмСнт управлСния для собствСнных Π½ΡƒΠΆΠ΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ нСцСлСсообразным Π·Π°Ρ‚Ρ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ усилия Π½Π° созданиС Π΅Π³ΠΎ вСрсии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π΄ΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° появилась Π² ΠΎΠΊΠ½Π΅ конструктора Ρ„ΠΎΡ€ΠΌ. Боздавая Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт управлСния Π²ΠΎ врСмя выполнСния, Π²Ρ‹ избавляСтС сСбя ΠΎΡ‚ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ этих усилий.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ динамичСского элСмСнта управлСния послС Π΅Π³ΠΎ создания, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ элСмСнта управлСния. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ мСстополоТСниС элСмСнта управлСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ свойства, значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ Π΄ΠΎ Π΅Π³ΠΎ отобраТСния.

2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ всСх событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ элСмСнтов управлСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·Ρƒ лишь Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΊ Π½ΠΈΠΌ присоСдиняСтся ΠΊΠΎΠ΄, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ события, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. По ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… событий Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ряд дСйствий:

 Π°. Π’Π°ΠΌ Π½ΡƒΠΆΠ½Π° функция, которая являСтся ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠΌ события (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ вызываСтся ΠΏΡ€ΠΈ Π΅Π³ΠΎ запускС).

 Π±. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события (ΠΈΠ½Π°Ρ‡Π΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠΌ) с подходящСй сигнатурой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π²Π°ΡˆΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° события.

 Π². Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий Π² элСмСнтС управлСния.

Π‘ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Π°ΠΌ слишком слоТным, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ всС оказываСтся ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всСго лишь ΠΎΠ΄Π½ΠΎΠΉ строки ΠΊΠΎΠ΄Π°. НапримСр, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ всС Ρ‚Ρ€ΠΈ дСйствия, описываСмыС ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌΠΈ Π°, Π± ΠΈ Π².

newButton.Click += new System.EventHandler(this.ClickHandlerForButtons);

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, ΠΏΠΎ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ:

 Π°. this.ClickHandlerForButtons β€” это функция ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° событий.

 Π±. new System.EventHandler() β€” это Π΄Π΅Π»Π΅Π³Π°Ρ‚, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ событий.

 Π². newButton.Click +=… β€” добавляСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий Π² список ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ запускС события.

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

3. Π—Π°Π΄Π°Π½ΠΈΠ΅, ΠΏΡƒΡ‚Π΅ΠΌ использования свойства Parent Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта управлСния, Π² качСствС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ‚ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ этот элСмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ. ЀактичСски, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΈΠΌΠ΅Π½Π½ΠΎ этого послСднСго шага элСмСнт управлСния создаСтся ΠΈ размСщаСтся Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ свойства Parent элСмСнта управлСния являСтся null, Ρ‚ΠΎ элСмСнт управлСния Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ„ΠΎΡ€ΠΌΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания динамичСского элСмСнта управлСния

На рис. 13.8 ΠΈ Π² листингС 13.2 прСдставлСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ созданиС ΠΊΠ½ΠΎΠΏΠΎΠΊ Button ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π½ΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий Click. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для создания Π»ΡŽΠ±Ρ‹Ρ… ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Ρ… элСмСнтов управлСния. 

Рис. 13.8. ДинамичСскоС созданиС элСмСнтов управлСния Π²ΠΎ врСмя выполнСния


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

1. ЗапуститС Visual Studio .NET (2003 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ позднюю Π²Π΅Ρ€ΡΠΈΡŽ) ΠΈ создайтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ C# Smart Device Application.

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

3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Ρ„ΠΎΡ€ΠΌΡƒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Button ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠΉΡ‚Π΅ Π΅Π΅ Π² buttonCreateNewButtons.

4. Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² ΠΎΠΊΠ½Π΅ конструктора Ρ„ΠΎΡ€ΠΌ. На экранС отобразится ΠΎΠΊΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° вмСстС со скСлСтом Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ privatevoidbuttonCreateNewButtons_Click(object sender, System.EventArgs e). Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π² эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄.

5. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Ρ Π² ΠΎΠΊΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅ Π΅Π³ΠΎ части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π²Ρ‹ΡˆΠ΅ ΠΈ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π²Π²Π΅Π»ΠΈ.

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

7. ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ buttonCreateNewButtons, Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ появляСтся новая ΠΊΠ½ΠΎΠΏΠΊΠ° (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 13.8). Π©Π΅Π»Ρ‡ΠΊΠΈ Π½Π° любой ΠΈΠ· вновь созданных ΠΊΠ½ΠΎΠΏΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ запуску ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ ΠΎΠΊΠ½Π° сообщСний с тСкстом, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ

Листинг 13.2. ДинамичСскоС созданиС элСмСнтов управлСния Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ Π²ΠΎ врСмя выполнСния

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

//Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ количСства создаваСмых ΠΊΠ½ΠΎΠΏΠΎΠΊ

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

private int m_nextNewButtonIndex;


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

//ΠžΠ‘Π ΠΠ‘ΠžΠ’Π§Π˜Πš Π‘ΠžΠ‘Π«Π’Π˜Π™: ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅, которая

// ΠΈΠΌΠ΅Π΅Ρ‚ся Π½Π° нашСй Ρ„ΠΎΡ€ΠΌΠ΅.

//

//Π­Ρ‚Π° функция создаСт Π½ΠΎΠ²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ, присоСдиняСт Π΅Π΅ ΠΊ нашСй Ρ„ΠΎΡ€ΠΌΠ΅

//ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Ρ‰Π΅Π»Ρ‡ΠΊΠ° для Π½Π΅Π΅

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

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

 //ВпослСдствии ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, начиная

 //снизу экрана, поэтому ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ ΠΈΡ… количСство восСмью

 if (m_nextNewButtonIndex > 8) {

  return;

 }


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

 //Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ (Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡƒΡŽ ΠΊ нашСй Ρ„ΠΎΡ€ΠΌΠ΅)

 //ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ мСстополоТСниС, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ тСкст

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

 const int newButtonHeight = 15;

 System.Windows.Forms.Button newButton;

 newButton = new System.Windows.Forms.Button();

 newButton.Width = 100;

 newButton.Height = newButtonHeight;

 newButton.Left = 2;

 newButton.Top = (newButtonHeight + 2) * m_nextNewButtonIndex;

 newButton.Text = "New Button " + m_nextNewButtonIndex.ToString();


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

 //ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΎΠΌ

 //элСмСнтС управлСния.

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

 newButton.Click += new System.EventHandler(this.ClickHandlerForButtons);


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

 //ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ эту ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΊ Ρ„ΠΎΡ€ΠΌΠ΅. По сути,

 //это создаст ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅!

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

 newButton.Parent = this;


 //Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ счСтчик Π² соотвСтствии с созданиСм ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ

 m_nextNewButtonIndex++;

}


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

//ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ динамичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ

//ΠΊ нашим Π½ΠΎΠ²Ρ‹ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ

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

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

 Button buttonCausingEvent;

 buttonCausingEvent = (System.Windows.Forms.Button)sender;

 //Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ сообщСний, ΠΈΠ·Π²Π΅Ρ‰Π°ΡŽΡ‰Π΅Π΅ ΠΎ Ρ‚ΠΎΠΌ,

 //Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ событиС

 System.Windows.Forms.MessageBox.Show("Click event from: \n\r'" + buttonCausingEvent.Text + "'");

}

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ повСдСния ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов управлСния

Π’ .NET Compact Framework допускаСтся Π΄Π²Π° Π²ΠΈΠ΄Π° наслСдования элСмСнтов управлСния: 1) созданиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта управлСния с нуля, ΠΈ 2) ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ повСдСния ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов управлСния System.Windows.Forms.*, Π½Π΅ связанного с ΠΈΡ… пСрСрисовкой/Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, слСдуСт ΡΠΊΠ°Π·Π°Ρ‚ΡŒ нСсколько слов ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Π΅Π³ΠΎ .NET Compact Framework (вСрсия 1.1) Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚: ΠΎΠ½Π°, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ .NET Framework, Π½Π΅ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ характСристики пСрСрисовки стандартных элСмСнтов управлСния. (НапримСр, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для наслСдования элСмСнты управлСния Button, TreeView, TextBox ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ стандартныС элСмСнты управлСния, пСрСкрывая ΠΏΡ€ΠΈ этом способ ΠΈΡ… пСрСрисовки.) Π­Ρ‚ΠΎ сдСлано Π² интСрСсах функционирования Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ².