using System; using System.Collections.Generic; using System.Text; using System.Windows.Controls; namespace 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; } } }
WPF中MAC地址输入控件
最新推荐文章于 2022-10-18 08:24:15 发布