private void UpdateText() { if (_provider.ToDisplayString().Equals(Text)) { return; } bool success = _provider.Set(Text); SetText(success ? _provider.ToDisplayString() : Text, _provider.ToString(false, false)); }
protected override void OnPreviewTextInput(TextCompositionEventArgs e) { e.Handled = true; var validInput = false; if (!string.IsNullOrWhiteSpace(e.Text) && e.Text.Length == 1) { MaskedTextResultHint hint; validInput = MaskProvider.VerifyChar(e.Text[0], SelectionStart, out hint); if (validInput) { var initialString = MaskProvider.ToDisplayString(); var charArray = initialString.ToCharArray(); charArray[SelectionStart] = e.Text[0]; var verifyString = new string(charArray); TimeSpan ts; if (TimeSpan.TryParse(verifyString, CultureInfo.CurrentCulture, out ts)) { MaskProvider.Replace(e.Text, SelectionStart); } else { // Case 08:00:00 => 28:00:00 => 20:00:00 if (SelectionStart + 1 < charArray.Length) { charArray[SelectionStart + 1] = '0'; verifyString = new string(charArray); if (TimeSpan.TryParse(verifyString, CultureInfo.CurrentCulture, out ts)) { MaskProvider.Replace(e.Text, SelectionStart); MaskProvider.Replace('0', SelectionStart + 1); } else { validInput = false; } } else { validInput = false; } } } } base.OnPreviewTextInput(e); if (validInput) { RefreshText(); SelectionStart = GetNextCharacterPosition(SelectionStart); } }
private void UpdateVisibleText() { string text = null; if (is_empty_mask || setting_text) { text = base.Text; } else if (provider == null) { text = string.Empty; } else { text = provider.ToDisplayString(); } setting_text = true; if (base.Text != text) { int selstart = SelectionStart; base.Text = text; SelectionStart = selstart; } setting_text = false; }
private string GetMaskedInput(string name, string primaryFieldFormat) { var provider = new MaskedTextProvider(primaryFieldFormat, CultureInfo.CurrentCulture); provider.Set(name); return(provider.ToDisplayString()); }
public static string Mask(this string data, string mask) { MaskedTextProvider maskedTextProvider = new MaskedTextProvider(mask); maskedTextProvider.Set(data); return(maskedTextProvider.ToDisplayString()); }
public void Set_InputString() { var maskedTextProvider = new MaskedTextProvider(TestSimpleDigitMask); Assert.True(maskedTextProvider.Set("1234")); Assert.Equal("1-23-4", maskedTextProvider.ToDisplayString()); }
public void Replace_InputString_Position() { var maskedTextProvider = new MaskedTextProvider(TestSimpleDigitMask); Assert.True(maskedTextProvider.InsertAt("12", 0)); Assert.True(maskedTextProvider.Replace("23", 0)); Assert.Equal(TestMaskResultReplaceString, maskedTextProvider.ToDisplayString()); }
private static object CoerceText(DependencyObject d, object value) { MaskedTextBox textBox = (MaskedTextBox)d; MaskedTextProvider maskProvider = new MaskedTextProvider(textBox.Mask); maskProvider.Set((string)value); return(maskProvider.ToDisplayString()); }
private void RefreshText(MaskedTextProvider maskProvider, int pos) { // Refresh string. this.Text = maskProvider.ToDisplayString(); // Position cursor. this.SelectionStart = pos; }
public void Set_InputString_TestPosition_ResultHint() { var maskedTextProvider = new MaskedTextProvider(TestSimpleDigitMask); Assert.True(maskedTextProvider.Set("1234", out int testPosition, out MaskedTextResultHint resultHint)); Assert.Equal("1-23-4", maskedTextProvider.ToDisplayString()); Assert.Equal(5, testPosition); Assert.Equal(MaskedTextResultHint.Success, resultHint); }
//refreshes the text of the textbox protected void RefreshText(MaskedTextProvider provider, int position) { if (provider == null) { return; } Text = provider.ToDisplayString(); SelectionStart = position; }
private void UpdateText(MaskedTextProvider provider, int position) { if (provider == null) { throw new ArgumentNullException("MaskedTextProvider", "Mask cannot be null."); } Text = provider.ToDisplayString(); SelectionStart = position; }
public void Replace_InputChar_StartPosition_EndPosition_TestPosition_ResultHint() { var maskedTextProvider = new MaskedTextProvider(TestSimpleDigitMask); Assert.True(maskedTextProvider.InsertAt("12", 0)); Assert.True(maskedTextProvider.Replace('2', 0, 5, out int testPosition, out MaskedTextResultHint resultHint)); Assert.Equal("2-__-_", maskedTextProvider.ToDisplayString()); Assert.Equal(0, testPosition); Assert.Equal(MaskedTextResultHint.Success, resultHint); }
public void Replace_InputString_Position_TestPosition_ResultHint() { var maskedTextProvider = new MaskedTextProvider(TestSimpleDigitMask); Assert.True(maskedTextProvider.InsertAt("12", 0)); Assert.True(maskedTextProvider.Replace("23", 0, out int testPosition, out MaskedTextResultHint resultHint)); Assert.Equal(TestMaskResultReplaceString, maskedTextProvider.ToDisplayString()); Assert.Equal(2, testPosition); Assert.Equal(MaskedTextResultHint.Success, resultHint); }
private void RefreshText(int pos) { // Refresh string. // Any way to do this more efficiently? // Spec mentions enumerating over characters, but I don't // think that makes a difference here (as changing any character // in essence creates a new string object). this.Text = maskProvider.ToDisplayString(); // Position cursor. this.SelectionStart = pos; }
private void UpdateText(int position) { MaskedTextProvider provider = MaskProvider; if (provider == null) { throw new InvalidOperationException(); } Text = provider.ToDisplayString(); SelectionLength = 0; SelectionStart = position; }
//refreshes the text of the textbox private void RefreshText(MaskedTextProvider provider, int position) { Text = provider.ToDisplayString(); SelectionStart = position; foreach (var part in _dtParts.Parts) { int index = dtFormat.IndexOf(part.Name); if (index != -1) { part.Index = index; part.Value = Text.Substring(index, part.Name.Length); } } }
//force the text of the control to use the mask private static object ForceText(DependencyObject sender, object value) { MaskedTextBox textBox = (MaskedTextBox)sender; if (textBox.Mask != null) { MaskedTextProvider provider = new MaskedTextProvider(textBox.Mask); provider.Set((string)value); return(provider.ToDisplayString()); } else { return(value); } }
/* * Mask Character Accepts Required? * 0 Digit (0-9) Required * 9 Digit (0-9) or space Optional # Digit (0-9) or space Required # L Letter (a-z, A-Z) Required # ? Letter (a-z, A-Z) Optional # & Any character Required # C Any character Optional # A Alphanumeric (0-9, a-z, A-Z) Required # a Alphanumeric (0-9, a-z, A-Z) Optional # Space separator Required # . Decimal separator Required # , Group (thousands) separator Required # : Time separator Required # / Date separator Required # $ Currency symbol Required # # In addition, the following characters have special meaning: # # Mask Character Meaning # < All subsequent characters are converted to lower case # > All subsequent characters are converted to upper case | Terminates a previous < or > \ Escape: treat the next character in the mask as literal text rather than a mask symbol */ private void AssociatedObjectLoaded(object sender, RoutedEventArgs e) { Provider = new MaskedTextProvider(InputMask, CultureInfo.CurrentCulture); Provider.Set(AssociatedObject.Text); Provider.PromptChar = PromptChar; AssociatedObject.Text = Provider.ToDisplayString(); //seems the only way that the text is formatted correct, when source is updated DependencyPropertyDescriptor textProp = DependencyPropertyDescriptor.FromProperty(TextBox.TextProperty, typeof(TextBox)); if (textProp != null) { textProp.AddValueChanged(AssociatedObject, (s, args) => UpdateText()); } }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { var mask = parameter as string; var inString = value as string; if (mask != null & inString != null) { MaskedTextProvider mtp = new MaskedTextProvider(mask); if (mtp.Set(inString)) { return(mtp.ToDisplayString()); } } return(DependencyProperty.UnsetValue); }
protected virtual object ForceText(object value) { if (Mask != null) { var provider = new MaskedTextProvider(Mask) { PromptChar = PromptChar }; if (value != null) { provider.Set((string)value); } return(provider.ToDisplayString()); } return(value); }
private static object CoerceText(DependencyObject d, object value) { MaskedTextBox textBox = (MaskedTextBox)d; if (String.IsNullOrEmpty(textBox.Mask)) { return(String.Empty); } MaskedTextProvider maskProvider = new MaskedTextProvider(textBox.Mask); if (null != value) { maskProvider.Set((string)value); } return(maskProvider.ToDisplayString()); }
//force the text of the control to use the mask private static object ForceText(DependencyObject sender, object value) { if (!isValueChanging) { DateTimeEditor textBox = (DateTimeEditor)sender; if (textBox.Mask != null) { MaskedTextProvider provider = textBox.MaskProvider; provider.Set((string)value); isValueChanging = true; //prevent endless loop if (value == null || string.IsNullOrEmpty((string)value)) { if (textBox.IsNullable) { textBox.Value = DateTime.Parse("1/1/0001 00:00:00"); } else { throw new Exception("Only IsNullable is set to true, Text can be empty."); } } else { DateTime result = new DateTime(); if (!DateTime.TryParse((string)value, textBox.CultureInfo, DateTimeStyles.None, out result)) { textBox.lastValidValue = textBox.Value; } else { textBox.Value = result; } } isValueChanging = false; if (value == null || string.IsNullOrEmpty((string)value)) { return(""); } else { return(provider.ToDisplayString()); } } } return(value); }
public void ToStringTest() { var maskedTextProvider = new MaskedTextProvider(TestSimpleDigitMask); maskedTextProvider.PasswordChar = '*'; Assert.True(maskedTextProvider.Set("1234")); Assert.Equal("1-23-4", maskedTextProvider.ToString()); Assert.Equal("*-**-*", maskedTextProvider.ToString(false)); Assert.Equal("1-2", maskedTextProvider.ToString(0, 3)); Assert.Equal("*-*", maskedTextProvider.ToString(false, 0, 3)); Assert.Equal("*-**-*", maskedTextProvider.ToDisplayString()); Assert.True(maskedTextProvider.Set("12")); Assert.Equal("1-2_-_", maskedTextProvider.ToString(true, true)); Assert.Equal("2_-", maskedTextProvider.ToString(true, true, 2, 3)); Assert.Equal("*_-", maskedTextProvider.ToString(false, true, true, 2, 3)); }
private void RefreshProvider() { _provider = new MaskedTextProvider(!string.IsNullOrEmpty(InputMask) ? InputMask : " ", CultureInfo.CurrentCulture); _provider.Set(String.IsNullOrWhiteSpace(UnmaskedText) ? String.Empty : UnmaskedText); _provider.PromptChar = ' '; Text = _provider.ToDisplayString(); DependencyPropertyDescriptor textProp = DependencyPropertyDescriptor.FromProperty(TextProperty, typeof(MaskedTextBox)); if (textProp != null) { textProp.AddValueChanged(this, (s, args) => UpdateText()); } DataObject.AddPastingHandler(this, Pasting); }
//refreshes the text of the textbox private void RefreshText(MaskedTextProvider provider, int position) { Text = provider.ToDisplayString(); SelectionStart = position; }