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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C# для профСссионалов. Π’ΠΎΠΌ IIΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 152

Автор Π‘ΠΈΠΌΠΎΠ½ Робинсон

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

Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Π°Π±Π·Π°Ρ† Π½Π΅ совсСм справСдлив. Π’ VB сущСствуСт ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Sub Main(), которая дСйствуСт ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ ΠΎΠ½Π° Π½Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ здСсь сравниваСтся типичная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° C# с Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ VB, Ρ‚ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° зрСния, ΠΊΠΎΠ½ΡΡ‚Π°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ VB Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для событиС Π² ΠΎΠ±Ρ‰Π΅ΠΌ оказываСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π΄Π²Π΅ ΠΈΠ΄Π΅ΠΈ программирования, Π΄Π°Π²Π°ΠΉΡ‚Π΅ выясним, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° выполняСтся любоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Visual Basic ΠΈΠ»ΠΈ любоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GUI Windows, Π½Π΅ Π²Π°ΠΆΠ½ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ языкС ΠΎΠ½ΠΎ написано. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ рассмотрСниС, Ρ‡Π΅ΠΌ Π² случаС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈΡΡŒ ΠΏΠ΅Ρ€Π΅Π΄ этим, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ сосрСдоточимся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° прилоТСниях Windows API (Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π½Π΅Ρ‚ консолСй, слуТб ΠΈ Ρ‚.Π΄.).

Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ начинаСтся Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΊΠ½Π° ΠΈ элСмСнты управлСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄ этих элСмСнтов управлСния Π½Π° экран. Π’ этом мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π΅Π»Π°Π΅Ρ‚ Π·Π°Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²Ρ…ΠΎΠ΄ΠΎΠΌ Π² Ρ†ΠΈΠΊΠ» сообщСний. На самом Π΄Π΅Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° засыпаСт ΠΈ ΠΏΡ€ΠΈΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Windows Ρ€Π°Π·Π±ΡƒΠ΄ΠΈΡ‚ΡŒ сСбя, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ интСрСсноС, ΠΎ Ρ‡Π΅ΠΌ Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ. Π­Ρ‚ΠΈ "интСрСсныС" Π²Π΅Ρ‰ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ событиями, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, Π° Ρ‚Π°ΠΊΠΆΠ΅ сущСствуСт достаточно ΠΌΠ½ΠΎΠ³ΠΎ событий, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ трСбуСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ свои собствСнныС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ссли ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ события написан Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚ΠΎ VB IDE спокойно прСдставляСт Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ этого ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„ΠΎΡ€ΠΌΡ‹. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для Π½Π΅Π³ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ показываСтся Π² VB, Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ VB ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ попытаСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ VB IDE Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ добавляСт Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ этой ситуациСй.

Когда происходит событиС, Windows ΠΏΡ€ΠΎΠ±ΡƒΠΆΠ΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий, ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΠ΄ программиста. Когда ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий заканчиваСтся, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ снова ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Ρ‚ сСбя Π² спящий Ρ€Π΅ΠΆΠΈΠΌ, приказывая Windows Ρ€Π°Π·Π±ΡƒΠ΄ΠΈΡ‚ΡŒ сСбя, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ интСрСсноС событиС. НаконСц, прСдполагая, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Windows Ρ€Π°Π·Π±ΡƒΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ дСйствия β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ сообщСния, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈ Π·Π°Ρ‚Π΅ΠΌ спокойно Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ. Π‘Π½ΠΎΠ²Π° большая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ это Π΄Π΅Π»Π°Π΅Ρ‚, добавляСтся Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ нСявно VB IDE, ΠΈ программист Π½ΠΈΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚.

ΠŸΠΎΡ‚ΠΎΠΊ выполнСния Π² Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ GUI Windows выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

На этой Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ Ρ€Π°ΠΌΠΊΠ° с ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Ρƒ Ρ‡Π°ΡΡ‚ΡŒ исполнимого ΠΊΠΎΠ΄Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ VB IDE прСдоставляСт программисту доступ ΠΈ для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄,β€” это нСсколько ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий. ΠžΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° нСдоступна для программиста, хотя Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стСпСни ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, выбирая Ρ‚ΠΈΠΏ прилоТСния ΠΏΡ€ΠΈ запросС ΠΊ VB Π½Π° созданиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² VB появляСтся Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ Ρ‚ΠΈΠΏ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ,β€” стандартный EXE, ActiveX EXE, ActiveX DLL ΠΈ Ρ‚.Π΄. ПослС Π²Ρ‹Π±ΠΎΡ€Π° VB IDE ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ всСго Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Ρ‚ΠΎΠΉ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая находится Π²Π½Π΅ ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½ΠΎΠΉ Ρ€Π°ΠΌΠΊΠΈ Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹Π±Ρ€Π°Π½ΠΎ созданиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° стандартного EXE, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ActiveX DLL Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ†ΠΈΠΊΠ»Π° сообщСний, Π½ΠΎ вмСсто этого зависит ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²), ΠΈ ΠΏΡ€ΠΈ этом даСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ происходит.

Π Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΎ сказано, Ρ‡Ρ‚ΠΎ Π² C# программист ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊΠΎ всСму ΠΊΠΎΠ΄Ρƒ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ это ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ: всС ΠΌΠ΅Π»ΡŒΡ‡Π°ΠΉΡˆΠΈΠ΅ подробности ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ происходит Π² Ρ†ΠΈΠΊΠ»Π΅ сообщСний, Π½Π°Π΄Π΅ΠΆΠ½ΠΎ скрыты Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… DLL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ написала компания Microsoft, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ элСмСнты ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Допустим, ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ доступы ΠΊ ΠΊΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заставляСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²ΠΎΠΉΡ‚ΠΈ Π² Ρ†ΠΈΠΊΠ» сообщСний ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π΅Π΅ Π² спящСС состояниС ΠΈ Ρ‚.Π΄. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ доступ ΠΊ исходному ΠΊΠΎΠ΄Ρƒ, ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π΅ΠΌΡƒ экзСмпляры всСх Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… элСмСнтов управлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅, дСлая эти экзСмпляры Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΈ опрСдСляя ΠΈΡ… Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ полоТСния, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅. НСобходимо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ трСбуСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. ΠŸΡ€ΠΈ использовании Visual Studio.NET для создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° C# ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ появляСтся Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰Π΅Π΅, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, ΠΈ Visual Studio.NET Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ вСсь Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄. Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Visual Studio.NET записываСт этот Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ исходный Π½Π° C#, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ нСпосрСдствСнно Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ВсС это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ исходный ΠΊΠΎΠ΄ получаСтся Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТным. Однако ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ Π΅Π³ΠΎ прСимущСство Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ обСспСчиваСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½Π° сСбя Π²Π΅Π΄Π΅Ρ‚. А Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π² C#. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² Visual Basic Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ написаниС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² Ρ„ΠΎΡ€ΠΌ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² COM, Π² C# Π²Ρ‹ Π² ΠΏΡ€Π°Π²Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Windows. Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния (ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки) ΠΈ страницы ASP.NET (наслСдник ASP), Ρ‡Ρ‚ΠΎ нСльзя Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² VB6 (ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ VBScript для страниц ASP). Π’ этом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΌΡ‹ сосрСдоточимся Π½Π° классичСских прилоТСниях GUI для Windows.

Код C# для ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСна ΠΎΡΡ‚Π°Π²ΡˆΠ°ΡΡΡ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° SquareSample, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС ΠΎ классах Π² C#.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ SquareRoot Π½Π° C# Π±Ρ‹Π» создан Π² Visual Studio.NET, Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° VB β€” Π² IDE VB6. Однако прСдставлСнный здСсь ΠΊΠΎΠ΄ являСтся Π½Π΅ совсСм Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сгСнСрировала Visual Studio.NET. Помимо добавлСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий, сдСланы ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния Π² ΠΊΠΎΠ΄Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ программирования Π² C#. Но нСсмотря Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ, ΠΎΠ½ всС-Ρ‚Π°ΠΊΠΈ даст Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄Π΅Π»Π°Π΅Ρ‚ Visual Studio.NET, ΠΊΠΎΠ³Π΄Π° создаСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π’Π΅ΡΡŒ тСкст исходного ΠΊΠΎΠ΄Π° достаточно Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ. Он прСдставлСн здСсь для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ сразу ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ объяснСниям ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ исходному ΠΊΠΎΠ΄Ρƒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости.

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;


namespace Wrox.ProfessionalCSharp.AppendixC.SquareRootSample {

 /// <summary>

 /// Form, которая Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ основноС ΠΎΠΊΠ½ΠΎ прилоТСния:

 /// </summary>

 public class SquareRootForm : System.Windows.Forms.Form {

  private System.Windows.Forms.TextBox txtNumber;

  private System.Windows.Forms.TextBox txtSign;

  private System.Windows.Forms.TextBox txtResult;

  private System.Windows.Forms.Button cmdShowResults;

  private System.Windows.Forms.Label label1;

  private System.Windows.Forms.Label label2;

  private System.Windows Forms.Label label3;

  private System.Windows.Forms.Label label4;


  /// <summary>

  /// НСобходимыС для designer ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

  /// </summary>

  private System.ComponentModel.Container components;

  public SquareRootForm() {

   InitializeComponent();

  }

  public override void Dispose() {

   base.Dispose();

   if(components != null) components.Dispose();

  }


#region Windows Form Designer generated code

  /// <summary>

  /// Π’Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Designer ΠΌΠ΅Ρ‚ΠΎΠ΄ - Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ

  /// содСрТимоС этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π°.

  /// </summary>