protected override void OnTextChanged(EventArgs e)
        {
            base.OnTextChanged(e);

            if (!this.Blank)
            {
                int value;
                if (!Int32.TryParse(this.Text, out value))
                    base.Text = String.Empty;
                else
                {
                    if (value > this.RangeUpper)
                    {
                        base.Text = this.RangeUpper.ToString(CultureInfo.InvariantCulture);
                        this.SelectionStart = 0;
                    }
                    else if ((this.TextLength == this.MaxLength) && (value < this.RangeLower))
                    {
                        base.Text = this.RangeLower.ToString(CultureInfo.InvariantCulture);
                        this.SelectionStart = 0;
                    }
                    else
                    {
                        int originalLength = this.TextLength;
                        int newSelectionStart = this.SelectionStart;

                        base.Text = value.ToString(CultureInfo.InvariantCulture);

                        if (this.TextLength < originalLength)
                        {
                            newSelectionStart -= (originalLength - this.TextLength);
                            this.SelectionStart = Math.Max(0, newSelectionStart);
                        }
                    }
                }
            }

            if (null != this.TextChangedEvent)
            {
                TextChangedEventArgs args = new TextChangedEventArgs {FieldIndex = this.FieldIndex, Text = this.Text};
                this.TextChangedEvent(this, args);
            }

            if (this.TextLength == this.MaxLength && this.Focused && this.SelectionStart == this.TextLength)
                this.SendCedeFocusEvent(IPAddressControlDirection.Forward, IPAddressControlSelection.All);
        }
        private void OnFieldTextChanged(Object sender, TextChangedEventArgs e)
        {
            if (null != this.FieldChangedEvent)
            {
                FieldChangedEventArgs args = new FieldChangedEventArgs {FieldIndex = e.FieldIndex, Text = e.Text};
                this.FieldChangedEvent(this, args);
            }

            this.OnTextChanged(EventArgs.Empty);
        }