2011年6月3日星期五

  WPF中MAC地址输入控件

using System;using System.Collections.Generic;using System.Text;using System.Windows.Controls;namespace MasterUpgrade.Control{    public class MacAddressEditor : TextBox    {        private string _lastText = "";        public MacAddressEditor() : base()        {        }        protected override void OnTextChanged(TextChangedEventArgs e)        {            string text = Text;            if (PrepareText(ref text))            {                Text = text;                _lastText = Text;            }            else            {                Text = _lastText;            }            if(Text.Length > 0)                CaretIndex = Text[Text.Length - 1] == '-' ? Text.Length - 1 : Text.Length;            e.Handled = true;            base.OnTextChanged(e);        }        private bool PrepareText(ref string text)        {            if (text.Length > 17)                return false;            text = text.ToUpper();            string t = "";            foreach(char c in text)            {                if ((c >= 48 && c <= 57) ||                    (c >= 65 && c <= 70))                {                    t += c;                    if(t.Length == 2 ||                        t.Length == 5 ||                        t.Length == 8 ||                        t.Length == 11 ||                        t.Length == 14)                    {                        t += "-";                    }                }                else if(c != ':' && c != '-')                {                    return false;                }            }            if (t.EndsWith("-"))                t = t.Remove(t.Length - 1);            if (t.Length > 17)                return false;            text = t;            return true;        }    }}

没有评论:

发表评论