When setting the CurrencyDecimalSeparator to "," the MaskedCurrencyInput shows ".," (decimal point is not expected). Similar issues with MaskedNumericInput. Setting both CurrencyDecimalSeparator and CurrencyGroupSeparator to "." also produces issues. Possible workaround: public class CustomCurrency: RadMaskedCurrencyInput { protected override void SetSeparators(params Telerik.Windows.Controls.MaskedInput.Separator[] separatorsArray) { base.SetSeparators(separatorsArray); this.Separators.Add(new Separator(this.Culture.NumberFormat.NumberDecimalSeparator, true)); } } The fix will be available in lib for 11 July 2016.
MaskedInputExtensions.AllowNull is set to False. Select All then Delete makes the Value 0 and the Text is like "______0.00" (contains 0.00) which is expected (this is in Numeric and CurrencyInput). Second time SelectAll and then delete makes the Value 0 but the text becomes "________" which is not expected. Available in LIB version: 2014.3.1124
Implement a behavior to allow dymanically changing the FormatString precision specifier ===== Reason to mark it Completed: Added the "Dynamic Format String" sample in SDK. Will be live with Q2 2014 (mid June)
MaskedInput: The cursor of the Mouse is Caret when it is over the built in ScrollViewer ==== Reason for deletion: The bug is logged for RadMaskedTextBox and it will be removed from our suite from Q2 2014.
The MaskedNumericInput control doesn't escape formatting characters like 'c' or 'n'. ============= This is not reproducible in R3 2016 version.
When two or more MaskInput controls are focused at the same time, the application freezes. Workaround: Instead of txtMask1.Focus(); txtMask2.Focus(); Use txtMask1.Focus(); Dispatcher.BeginInvoke(new Action(() => { txtMask2.Focus(); }), DispatcherPriority.Loaded);
Change the x:Key of the PreviewInputTextBox style in all themes definitions as at the moment it matches the x:Key of the TextBox style in the System.Windows.xaml. This is completed in R2 / R3 2013.
Use No-Masked TextInput (Mask=""). Pressing delete will always place the caret on position 0.
If there is a whitespace in the Mask of the control and you try to paste a value containing whitespace, the control will trim the user input. Example: Mask="(###) ###-#### User Input: 1234567890 The MaskedText should be: (123) 456-7890 If you copy this input and try to paste it into a control with the same Mask you will get (123) 45-6789 which is not correct. Possible workarounds !!! 1. In a scenario when the user will enter only digits in the MaskedTextInput for a phone number is to restrict the input by setting the following mask. <telerik:RadMaskedTextInput EmptyContent="Enter digits" Mask="(d3) d3-d4" /> 2. The second workaround is to use non breaking space in Mask, this way there won't be a match between space by the user and space in the mask symbols.
When using implicit styles mechanism and you merge Telerik.Windows.Controls.Input an exception is thrown. If the XAML file is set with BUILD ACTION PAGE the issue is not reproducible. Another workaround is to reference dlls only, not xaml theme files. Issue is reported in several msdn / stackoverflow threads and it appears to be an MS-TextBox one. http://stackoverflow.com/questions/6850713/weird-xaml-parsing-error-when-trying-to-set-textbox-isreadonly
Bug details: OS: Windows 10. VS: 2015 professional Telerik version: 2015.2 SP1 Code sample: <Window x:Class="RadMaskedInputBug.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" Title="MainWindow"> <Grid> <telerik:RadTextTimeInput /> </Grid> </Window> The designer crashes and shows only the exception: InvalidOperationException: Can only base on a Style with target type that is base type 'RadMaskedTextInput'. UPDATE: Telerik has submitted a bug report to Microsoft. You can check its progress here: https://connect.microsoft.com/VisualStudio/feedback/details/2005303/designer-error-can-only-base-on-a-style-with-target-type-that-is-base-type-customcontrol-when-a-style-is-basedon-a-style-of-an-abstract-class On 21/12/2015 Microsoft commented that a fix has been submitted and will be available in the next update.
When the Value of the RadMaskedInput (all RadMaskedInput controls) is changed in code behind, the ValueChanged event isn't fired.
In order to reproduce, you need to focus the control when you run the application. 1.When you press the backspace key it removes the last character and after pressing it a second time the character will be replaced with the removed character. 2. When paste(Ctrl+V) a text in the control, the text is ignoring the current position of the caret and position at the beginning of the control.
Setting the Extnesions Minimum and Maximum values restricts the input of values that fall in the designated area but that start with a digit lesser than the minimum value. For example in the MaskedNumeric/CurrencyInput, if you set MaskedInputExtensions.Minimum="2" and MaskedInputExtensions.Maximum="20", you can't enter 12 unless the current value is 2 and the cursor is positioned before the 2 - only then you can insert the digit 1 before the digit 2 to create an input of 12.
Add a property to force only allowing uppercase values, without needing to specify a number of characters or have the underline in the control.
This is achievable in code, but it seems unnecessary to go to such lengths for each instance where it is needed.
private void bankCode_ValueChanging(object sender, Telerik.Windows.Controls.MaskedInput.RadMaskedInputValueChangingEventArgs e)
Pasting values in the controls, clears the current value in order to paste the new content
Initially, when the value is 0, the mask control could look like - $__,___.00 instead of $__,___0.00.
For example, the Mask "hh:mm:ss.ff" will render the value properly. But if you change the value at runtime (by pressing a key on the keyboard), the milliseconds will be re-parsed and will be displayed wrongly. For example, if you have the value "12:13:14.50" and you go to the ".50" part (between the decimal separator and the number 5). And then press 3, the milliseconds will change to ".03". To work this around you can create a custom masked input control and override its CoerceTextOverride() method. There you can implement some logic that replaces the wrong milliseconds text. Here is an example in code: public class CustomMaskedDateTimeInput : RadMaskedDateTimeInput { protected override string CoerceTextOverride(ref int selectionStart) { var text = base.CoerceTextOverride(ref selectionStart); if (this.Value.HasValue && this.Mask != null && this.Mask.Contains("hh:mm:ss.f")) { int millisecondsAllowedLength = GetAllowedMillisecondsLength(this.Mask); // example: .ff means that there are 2 allowed millisecond chars int millisecondsMaxLength = 3; // max = 999 var milliseconds = this.Value.Value.Millisecond.ToString(); // the original milliseconds give from the value var zeroesCount = millisecondsMaxLength - milliseconds.Length; // how many zeroes should be append before the millseconds string value milliseconds = new string('0', zeroesCount) + milliseconds; // append the zeroes // apply the milliseconds restriction given by the Mask (.ff - two symbols) if (milliseconds.Length > millisecondsAllowedLength) { int charsToRemoveCount = milliseconds.Length - millisecondsAllowedLength; for (int i = 0; i < charsToRemoveCount; i++) { milliseconds = milliseconds.Remove(milliseconds.Length - 1, 1); } } // replace the default parsed millseconds part of the string with the custom milliseconds var millisecondsIndex = text.LastIndexOf(".") + 1; text = text.Remove(millisecondsIndex, millisecondsMaxLength - millisecondsAllowedLength); text = text.Insert(millisecondsIndex, milliseconds); } return text; } private int GetAllowedMillisecondsLength(string mask) { int length = 0; var millisecondsIndex = mask.LastIndexOf(".") + 1; if (millisecondsIndex != -1) { length = mask.Length - millisecondsIndex; } return length; } }
This leads to a wrong value displayed in the masked input. The mask is always coerced to "hh:mm:ss.ff". An additional, 'f' is added to the mask. Probably, this will happen also if you have a single letter on another position in the mask. To work this around you can create a custom masked input control and override its CoerceTextOverride() method. There you can implement some logic that replaces the wrong milliseconds text. Here is an example in code: public class CustomMaskedDateTimeInput : RadMaskedDateTimeInput { protected override string CoerceTextOverride(ref int selectionStart) { var text = base.CoerceTextOverride(ref selectionStart); if (this.Value.HasValue && this.Mask != null && this.Mask.Contains("hh:mm:ss.f")) { int millisecondsAllowedLength = GetAllowedMillisecondsLength(this.Mask); // example: .ff means that there are 2 allowed millisecond chars int millisecondsMaxLength = 3; // max = 999 var milliseconds = this.Value.Value.Millisecond.ToString(); // the original milliseconds give from the value var zeroesCount = millisecondsMaxLength - milliseconds.Length; // how many zeroes should be append before the millseconds string value milliseconds = new string('0', zeroesCount) + milliseconds; // append the zeroes // apply the milliseconds restriction given by the Mask (.ff - two symbols) if (milliseconds.Length > millisecondsAllowedLength) { int charsToRemoveCount = milliseconds.Length - millisecondsAllowedLength; for (int i = 0; i < charsToRemoveCount; i++) { milliseconds = milliseconds.Remove(milliseconds.Length - 1, 1); } } // replace the default parsed millseconds part of the string with the custom milliseconds var millisecondsIndex = text.LastIndexOf(".") + 1; text = text.Remove(millisecondsIndex, millisecondsMaxLength - millisecondsAllowedLength); text = text.Insert(millisecondsIndex, milliseconds); } return text; } private int GetAllowedMillisecondsLength(string mask) { int length = 0; var millisecondsIndex = mask.LastIndexOf(".") + 1; if (millisecondsIndex != -1) { length = mask.Length - millisecondsIndex; } return length; } }