> ByVal e As System.EventArgs)
> Dim buttonCausingEvent As Button = _
> CType(sender, System.Windows.Forms.Button)
> 'Вызвать окно сообщений, извещающее о том,
> 'что мы получили событие
> MsgBox("Click event from:" + vbCrLf + buttonCausingEvent.Text)
>End Sub
Листинг 13.3. Фильтрующее текстовое окно, принимающее текст в формате ###-##-####
>Option Strict On
>Imports System
>'----------------------------------------------------------------------------
>'Этот класс является элементом управления, производным от элемента управления
>'TextBox.
>'Он наследует все графические свойства TextBox, но добавляет фильтрацию
>'содержимого текстового окна, тем самым гарантируя,
>'что вводимый текст будет соответствовать формату:
>'###-##-####.
>'Этот формат соответствует формату номеров карточек социального страхования,
>'используемых в США.
>'-----------------------------------------------------------------------------
>Public Class SocialSecurityTextBox
>Inherits System.Windows.Forms.TextBox
>Private m_inputIsFullValidEntry As Boolean
>'------------------------------------------------
>'Указывает, получен ли
>'номер карточки социального страхования полностью
>'------------------------------------------------
>Public ReadOnly Property IsFullValidInput() As Boolean
> Get
> Return m_inputIsFullValidEntry
> End Get
>End Property
>'Объект StringBuilder, которую мы будем часто использовать
>Private m_sb As System.Text.StringBuilder
>'Максимальная длина обрабатываемых строк
>Const SSNumberLength As Integer = 11
>'-----------
>'Конструктор
>'-----------
>Public Sub New()
> 'Распределить память для нашего объекта StringBuilder и предоставить
> 'место для нескольких дополнительных рабочих символов по умолчанию
> m_sb = New System.Text.StringBuilder(SSNumberLength + 5)
> m_inputIsFullValidEntry = False
>End Sub
>'---------------------------------------------------------------------
>'Форматировать поступающий текст с целью установления его соответствия
>'нужному формату:
>'
>' Формат номера карточки социального страхования: ###-##-####
>' символы: 01234567890
>'
>' [in] inString : Текст, который мы хотим форматировать
>' [in/out] selectionStart: Текущая точка вставки в тексте;
>' она будет смещаться в связи с удалением
>' и добавлением нами символов
>'----------------------------------------------------------------------
>Private Function formatText_NNN_NN_NNNN(ByVal inString As _
> String, ByRef selectionStart As Integer) As String
> Const firstDashIndex As Integer = 3
> Const secondDashIndex As Integer = 6
> 'Удалить старые данные и поместить входную строку
> 'в объект StringBuilder, чтобы мы могли с ней работать.