ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

ПолС рСдактирования с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ задания IP-адрСса

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ запискС рассматриваСтся описаниС процСсса создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° дальнСйшСго использования ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ «Editip». Π‘Ρ‹Π»Π° выявлСна ошибка пСрСполнСния, вслСдствиС Π²Π²ΠΎΠ΄Π° слишком большого числа, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΎ Π² Ρ‡ΠΈΡΠ»ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Int32. Π’ Ρ„ΠΎΡ€ΠΌΡƒ Π±Ρ‹Π» ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ созданный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ «Editip» ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ стандартных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° «Label» ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ip1… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ПолС рСдактирования с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ задания IP-адрСса (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° По Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅»

На Ρ‚Π΅ΠΌΡƒ «ΠŸΠΎΠ»Π΅ рСдактирования с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ задания IP-адрСса»

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Π΅Π΅ Π°Π½Π°Π»ΠΈΠ·

2. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ классов ΠΈ ΠΈΠ½Ρ‚СрфСйсов

3. ОписаниС классов, ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ, свойств

4. Π‘Π»ΠΎΠΊ-схСмы Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

5. ВСстированиС Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ интСрфСйс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Π΅Π΅ Π°Π½Π°Π»ΠΈΠ· ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для дальнСйшСго использования ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Ρ‹Π±ΠΎΡ€ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° слСдуСт ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ исходя ΠΈΠ· Ρ†Π΅Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ свойствами ΠΈ ΡΠΎΠ±Ρ‹Ρ‚иями, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠΈ. ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ использованиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

ΠŸΡ€ΠΈ этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ условиями Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ использованиС Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ инструмСнта Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ — срСды программирования Microsoft Visual Studio.NET. Π―Π·Ρ‹ΠΊ программирования C#.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ запискС рассматриваСтся описаниС процСсса создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° дальнСйшСго использования ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ «Editip» .

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ «Editip» содСрТит Π² ΡΠ΅Π±Π΅ 4 свойства «ip1», «ip2», «ip3», «ip4», хранящиС IPv4 Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΠ±ΠΈΡ‚Π½ΠΎ. Π­Ρ‚ΠΈ свойства Π±Ρ‹Π»ΠΈ созданы для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ событии измСнСния строки ΠΈΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π²Π²ΠΎΠ΄ Ρ†ΠΈΡ„Ρ€ ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ. Если Π²Π²Π΅Π΄Π΅Π½ Π½Π΅ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉ этому ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ символ — ΠΎΠ½ ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ся ΠΈΠ· ΡΡ‚Ρ€ΠΎΠΊΠΈ, Π±Π΅Π· сброса ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ. Если Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ обнаруТится Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€Π΅Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΈ ΠΏΠΎΡΠ»Π΅ послСднСй Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ число — всС содСрТимоС тСкстового поля обновляСтся согласно ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Π²Π²ΠΎΠ΄Π° IP-адрСса (754.198 589.50.5 прСвращаСтся Π² 255.255.50.5).

2. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ классов ΠΈ ΠΈΠ½Ρ‚СрфСйсов

Рисунок 1 — Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ классов

3. ОписаниС классов, ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ, свойств

Класс «Editip» являСтся Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ классом «TextBox». Π’ Π½Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ свойства свойства «ip1», «ip2», «ip3», «ip4» Ρ‚ΠΈΠΏΠ° byte. ИзмСнСн ΠΌΠ΅Ρ‚ΠΎΠ΄ «OnTextCanged», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€Π΅Π½ΠΈΠ΅ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° этих Π΄Π°Π½Π½Ρ‹Ρ… с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ свойств, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ «ip1», «ip2», «ip3», «ip4» ΠΈ «Text» .

4. Π‘Π»ΠΎΠΊ-схСмы Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

Алгоритм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° «OnTextChanged» .

5. ВСстированиС

Для тСстирования ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π±Ρ‹Π» ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСрял ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ созданной Ρ„ΠΎΡ€ΠΌΠ΅ Π½Π° Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ошибки. ВСстированиС ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° соотвСтствуСт ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ трСбованиям.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ тСстирования ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π±Ρ‹Π»ΠΈ осущСствлСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

— Π² Ρ„ΠΎΡ€ΠΌΡƒ Π±Ρ‹Π» ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ созданный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ «Editip» ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ стандартных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° «Label» ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ip1, ip2, ip2, ip4 соотвСтствСнно;

— Π² ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠΈ TextCanged ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Editip Π±Ρ‹Π»ΠΎ прописано присвоСниС свойств ip1, ip2, ip3, ip4 ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹ΠΌ строкам (Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ ΠΆΠΈΡ€Π½Ρ‹ΠΌ).

Рисунок 4 — Π’Π²ΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΡƒ ip Π°Π΄Ρ€Π΅ΡΠ°

— ΠΏΡ€ΠΈ внСсСнии Π² ΠΏΠΎΠ»Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° числа ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ 255, ip Π°Π²Ρ‚оматичСски сниТали это число Π² 255.

Рисунок 5 — Π’Π²ΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл

— ΠΏΠΎΡΠ»Π΅ Π²Π²ΠΎΠ΄Π° послСдних Ρ†ΠΈΡ„Ρ€, послС Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π²ΠΈΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ» Π² «ΠΏΠΎΡ€ΡΠ΄ΠΎΠΊ», Ссли числа ip1, ip2, ip3 Π½Π΅ ΡΠΎΠΎΡ‚вСтствовали трСбованиям Рисунок 6 — Π’Π²ΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΡƒ послСднСго числа

— Π±Ρ‹Π»Π° выявлСна ошибка пСрСполнСния, вслСдствиС Π²Π²ΠΎΠ΄Π° слишком большого числа, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΎ Π² Ρ‡ΠΈΡΠ»ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Int32.

Рисунок 7 — Ошибка

Ошибка Π±Ρ‹Π»Π° исправлСна использованиСм Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ try-catch

Рисунок 8 — Ошибка исправлСна

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»Π° создан ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ «Editip» для дальнСйшСго использования ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ проСктирования использовались ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΡ‹ Π±ΠΎΠ»Π΅Π΅ тСсно познакомились с ΡΠΈΠ½Ρ‚аксисом языка C#, Π² Ρ‡Π°ΡΡ‚ности создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ спСктрС Ρ€Π°Π·Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Листинг ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹

using System;

using System.Collections.Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Text;

using System.Windows.Forms;

namespace OOPip

{

public partial class Form1: Form

{

public Form1()

{

InitializeComponent ();

}

private void editip1_TextChanged (object sender, EventArgs e)

{

label1.Text = Convert. ToString (editip1.ip1);

label2.Text = Convert. ToString (editip1.ip2);

label3.Text = Convert. ToString (editip1.ip3);

label4.Text = Convert. ToString (editip1.ip4);

}

}

}

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° «Editip»

using System;

using System. ComponentModel;

using System.Collections.Generic;

using System. Diagnostics;

using System. Text;

namespace OOPip

{

public partial class Editip: System.Windows.Forms.TextBox

{

public Editip ()

{

InitializeComponent ();

}

public Editip (IContainer container)

{

container.Add (this);

Text = «0.0.0.0» ;

InitializeComponent ();

}

// объявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ хранящиС Ρ†ΠΈΡ€Ρ‹ ip Π°Π΄Ρ€Π΅ΡΠ°

public short ip1, ip2, ip3, ip4;

// встраиваСмся Π² ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ измСнСния тСкста

protected override void OnTextChanged (EventArgs e)

{

// обнуляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ хранящиС Ρ†ΠΈΡ€Ρ‹ ip Π°Π΄Ρ€Π΅ΡΠ°

ip1 = 0;

ip2 = 0;

ip3 = 0;

ip4 = 0;

// Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ

int start = SelectionStart;

//счСтчик Ρ‚ΠΎΡ‡Π΅ΠΊ

byte pCount = 0;

// Ссли строка Π½Π΅ ΠΏΡƒΡΡ‚Π°

try

{

if (Text ≠ «»)

{

// Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π²Π²ΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€, провСряСм Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ символы Π½Π° ΡΠΎΠΎΡ‚вСтствиС

for (int i = 0; i < Text. Length; i++)

{

// ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΠΎΠΎΡ‚вСтствиС числам

if ((Convert.ToInt32(Text[i]) >= 48 && Convert. ToInt32(Text[i]) <= 57)

// ΠΈΠ»ΠΈ соотвСствиС Ρ‚ΠΎΡ‡ΠΊΠ΅, Π½Π΅ ΡΡ‚оящСй ΠΏΠ΅Ρ€Π²ΠΎΠΉ, Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Ρ‚Ρ€Π΅Ρ‚Π΅ΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹

|| (Text[i] == '.' && pCount < 3 && i >= 1

&& (Convert.ToInt32(Text[i — 1]) >= 48 && Convert. ToInt32(Text[i — 1]) <= 57)))

{

if (Text[i] == '.')

{

pCount++;

}

}

else

{

Text = Text. Substring (0, i) + Text. Substring (i + 1);

}

}

// Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΈΠΏΡ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сканирования Π½Π° Ρ‚ΠΎΡ‡ΠΊΠΈ

string Str = Text;

int ii = 0;

if (Str.IndexOf ('.') ≠ -1)

{

ii = (Convert.ToInt32(Str.Substring (0, Str. IndexOf ('.'))));

if (ii > 255) { ii = 255; } ip1 = Convert. ToByte (ii);

Str = Str. Substring (Str.IndexOf ('.') + 1);

}

if (Str.IndexOf ('.') ≠ -1)

{

ii = (Convert.ToInt32(Str.Substring (0, Str. IndexOf ('.'))));

if (ii > 255) { ii = 255; } ip2 = Convert. ToByte (ii);

Str = Str. Substring (Str.IndexOf ('.') + 1);

}

if (Str.IndexOf ('.') ≠ -1)

{

ii = (Convert.ToInt32(Str.Substring (0, Str. IndexOf ('.'))));

if (ii > 255) { ii = 255; } ip3 = Convert. ToByte (ii);

Str = Str. Substring (Str.IndexOf ('.') + 1);

}

if (Str ≠ «»)

{

ii = (Convert.ToInt32(Str)); if (ii > 255) { ii = 255; } ip4 = Convert. ToByte (ii);

}

}

}

catch { }

// ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ Π² «Π±ΠΎΠΆΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄» Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Ρ‹ΠΉ тСкст, Ссли ΡƒΠΆΠ΅ имССтся 3 Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ символ Π½Π΅ Ρ‚ΠΎΡ‡ΠΊΠ°

if (pCount == 3 && Text. LastIndexOf ('.') ≠ Text. Length — 1)

{

Text = Convert. ToString (ip1) + «.» + Convert. ToString (ip2) + «.» + Convert. ToString (ip3) + «.» + Convert. ToString (ip4);

}

// Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΡƒ Π½Π° ΠΌΠ΅ΡΡ‚ΠΎ (сбиваСтся ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΈ тСкста)

SelectionStart = start;

base.OnTextChanged (e);

}

}

}

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ