TextBox自定义Mac输入框类

using System.Windows.Controls;

namespace test
{
    public class MacTextBox : TextBox
    {
        private string _lastText = "";
        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;
        }  
    }
}
posted @ 2014-07-16 15:07  iEvent  阅读(388)  评论(0编辑  收藏  举报