TextBoxカスタムMac入力ボックスクラス
5885 ワード
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;
}
}
}