To reproduce:
this.radDateTimePicker1.Format = DateTimePickerFormat.Short;
this.radDateTimePicker1.Value = new DateTime(2016, 5, 12);
this.radTextBox1.Text = "9/5/2016";
Second scenario:
this.radDateTimePicker1.Format = DateTimePickerFormat.Short;
If you copy "1/7/16" and paste it into RadDateTimeicker, the result date will be "1/7/1616". In the previous version, the result was correct 1/7/2016.
Copy the value in the text box and paste it in RadDateTimePicker.
Workaround:
public Form1()
{
InitializeComponent();
this.radDateTimePicker1.Format = DateTimePickerFormat.Short;
this.radDateTimePicker1.Value = new DateTime(2016, 5, 12);
this.radTextBox1.Text = "9/5/2016";
this.radDateTimePicker1.ValueChanging += radDateTimePicker1_ValueChanging;
this.radDateTimePicker1.DateTimePickerElement.TextBoxElement.TextBoxItem.TextBoxControl.KeyPress += TextBoxControl_KeyPress;
}
string clipboardData;
private void TextBoxControl_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\x16')
{
if (clipboardData != null)
{
this.radDateTimePicker1.Text = clipboardData;
clipboardData = null;
}
}
}
private void radDateTimePicker1_ValueChanging(object sender, Telerik.WinControls.UI.ValueChangingEventArgs e)
{
if (clipboardData == null)
{
clipboardData = RadMaskedEditBoxElement.GetClipboardText();
}
}
To reproduce:
public Form1()
{
InitializeComponent();
this.radDateTimePicker1.Culture = new System.Globalization.CultureInfo("en-GB");
RadTimePickerLocalizationProvider.CurrentProvider = new MyTimePickerLocalizationProvider();
this.radDateTimePicker1.DateTimePickerElement.ShowTimePicker = true;
}
class MyTimePickerLocalizationProvider : RadTimePickerLocalizationProvider
{
public override string GetLocalizedString(string id)
{
switch (id)
{
case RadTimePickerStringId.HourHeaderText:
return "TEST Hours";
case RadTimePickerStringId.MinutesHeaderText:
return "TEST Minutes";
case RadTimePickerStringId.CloseButtonText:
return "TEST CLOSE";
default:
return string.Empty;
}
}
}
Workaround:
RadDateTimePickerCalendar calendarBehaviorFrom = this.radDateTimePicker1.DateTimePickerElement.GetCurrentBehavior() as RadDateTimePickerCalendar;
calendarBehaviorFrom.Calendar.ShowFooter = true;
calendarBehaviorFrom.PopupControl.Opened += PopupControl_PopupOpened;
private void PopupControl_PopupOpened(object sender, EventArgs args)
{
RadDateTimePickerDropDown dd = sender as RadDateTimePickerDropDown;
TimePickerDoneButtonContent buttonContent = ((RadPanel)dd.HostedControl).Controls[2] as TimePickerDoneButtonContent;
var doneButton = ((Telerik.WinControls.UI.TimePickerDoneButtonElement)(buttonContent.RootElement.Children[0]));
doneButton.ButtonElement.Text = RadTimePickerLocalizationProvider.CurrentProvider.GetLocalizedString(RadTimePickerStringId.CloseButtonText);
}
Workaround: increase the height: this.radTimePicker1.MinimumSize = new Size(0, 28);
To reproduce: Using the below code, type something in the text box and execute the button shortcut => the caret remains where it was
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
AddTextBoxControl();
radButton1.ButtonElement.Shortcuts.Add(new RadShortcut(Keys.Alt, new Keys[] { Keys.R }));
}
private void radButton1_Click(object sender, EventArgs e)
{
radTextBoxControl1.Text = "";
}
Workaround:
Instead of setting the Text to empty string, use the control Clear method.
To reproduce:
- Add RadMaskedEditBox to a form and set its ReadOnly property to true.
- Paste a valid value using the Ctrl+V key combination.
Workaround:
- Disable the corresponding key combination in the KeyDown event:
void radMaskedEditBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.V)
{
e.SuppressKeyPress = true;
}
}
To reproduce:
- Set the mask to regex and paste with Ctrl + V.
Workaround:
private void RadmaskedEditBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\x16')
{
radmaskedEditBox1.MaskedEditBoxElement.TextBoxItem.Paste();
}
}
Workaround:
public Form1()
{
InitializeComponent(););
this.richTextBox1.Text = "thess is is a tesssset";
this.radSpellChecker1.AutoSpellCheckControl = this.richTextBox1;
this.radSpellChecker1.SpellingFormShowing += radSpellChecker1_SpellingFormShowing;
}
private void radSpellChecker1_SpellingFormShowing(object sender, SpellingFormShowingEventArgs e)
{
e.SpellingForm.FormClosed -= SpellingForm_FormClosed;
e.SpellingForm.FormClosed += SpellingForm_FormClosed;
}
private void SpellingForm_FormClosed(object sender, FormClosedEventArgs e)
{
this.radSpellChecker1.AutoSpellCheckControl = null;
this.radSpellChecker1.AutoSpellCheckControl = this.richTextBox1;
}
How to reproduce:
public RadForm1()
{
InitializeComponent();
this.radDateTimePicker1.Format = DateTimePickerFormat.Custom;
this.radDateTimePicker1.CustomFormat = "MM/dd/yyyy";
this.radDateTimePicker1.DateTimePickerElement.Calendar.HeaderNavigationMode = Telerik.WinControls.UI.HeaderNavigationMode.Zoom;
((Telerik.WinControls.UI.MaskDateTimeProvider)this.radDateTimePicker1.DateTimePickerElement.TextBoxElement.Provider).AutoSelectNextPart = true;
}
Workaround:
public RadForm1()
{
InitializeComponent();
this.radDateTimePicker1.Format = DateTimePickerFormat.Custom;
this.radDateTimePicker1.CustomFormat = "MM/dd/yyyy";
this.radDateTimePicker1.DateTimePickerElement.Calendar.HeaderNavigationMode = Telerik.WinControls.UI.HeaderNavigationMode.Zoom;
((Telerik.WinControls.UI.MaskDateTimeProvider)this.radDateTimePicker1.DateTimePickerElement.TextBoxElement.Provider).AutoSelectNextPart = true;
this.radDateTimePicker1.DateTimePickerElement.TextBoxElement.KeyDown += TextBoxElement_KeyDown;
}
private void TextBoxElement_KeyDown(object sender, KeyEventArgs e)
{
RadMaskedEditBoxElement tb = (RadMaskedEditBoxElement)sender;
MaskDateTimeProvider provider = (MaskDateTimeProvider)tb.Provider;
switch (provider.List[provider.SelectedItemIndex].type)
{
case PartTypes.Month:
if (e.KeyCode == Keys.Left)
{
provider.SelectedItemIndex = provider.List.Count;
}
break;
case PartTypes.Year:
if (e.KeyCode == Keys.Right)
{
provider.SelectedItemIndex = -1;
}
break;
}
}
To reproduce: -Add RadBrowseEditor to a form and set the DialogType to FolderBrowseDialog. -At runtime click the browse button to open the "Browse For Folder" dialog and click the "Make New Folder", type a name for the newly created folder BUT DO NOT PRESS THE ENTER KEY and click the OK button, the Value is set to "New Folder" instead of the name I have typed.
RadMaskedEditBox - has incorrect behavior when decimal separator is "D". You can set only one digit before separator.
RadMaskedEditBox - has incorrect behavior if you set values with differed length. Workaround is to reset the value before to set new one: C# RadMaskedEditBox1.Value = null; RadMaskedEditBox1.Value = "YourText"; VB RadMaskedEditBox1.Value = Nothing RadMaskedEditBox1.Value = "YourText"
The initial loading performance can be improved.
The performance can be improved by creating the RadContextMenu only when it is needed not when the element is created.
All controls (i.e. RadGridView, RadPropertyGrid, etc.), which use textbox editor, containing HostedTextBoxBase descendant, can be spelled by the RadSpellChecker. But the red underline is not displayed entirely. The inside hosted text box should have a bigger height.
To reproduce: use the following code:
public Form1()
{
InitializeComponent();
RadMaskedEditBox maskControl = new RadMaskedEditBox();
maskControl.TextMaskFormat = System.Windows.Forms.MaskFormat.ExcludePromptAndLiterals;
CultureInfo ci = CultureInfo.CreateSpecificCulture(Thread.CurrentThread.CurrentCulture.Name);
ci.NumberFormat.NumberGroupSeparator = "";
maskControl.Culture = ci;
maskControl.Text = "2";
object o = maskControl.Value; //Exception!!
this.Controls.Add(maskControl);
}
Workaround:
Do not set NumberGroupSeparator to String.Empty when TextMaskFormat=ExcludePromptAndLiterals
To reproduce: this.radDateTimePicker1.Format = DateTimePickerFormat.Custom; this.radDateTimePicker1.CustomFormat = "MM/yyyy"; this.radDateTimePicker1.Value = new DateTime(2016, 01, 31); Select the month part and try to change it to 02. Workaround: initialize with the first day of the month.
To reproduce: this.radTextBox1.Text = "sample"; this.radTextBox1.TextBoxElement.BackColor = Color.Red; this.radTextBox1.TextBoxElement.UseDefaultDisabledPaint = false; this.radTextBox1.TextBoxElement.Enabled = false; In previous version (e.g. Q1 2014 SP1) the TextBoxElement is not rendered red.
1. Add a RadMaskedEditBox and a RadCheckbox to your form.
2. Add ToggleStateChanged event to the RadCheckbox.
3. Use the following code:
private void radCheckBox1_ToggleStateChanged(object sender, StateChangedEventArgs args)
{
if (args.ToggleState == Telerik.WinControls.Enumerations.ToggleState.On)
{
radMaskedEditBox1.Mask = "^[0-9]{5}$";
radMaskedEditBox1.MaskType = MaskType.Regex;
}
else if (args.ToggleState == Telerik.WinControls.Enumerations.ToggleState.Off)
{
radMaskedEditBox1.Mask = "";
radMaskedEditBox1.MaskType = MaskType.None;
}
}
4. Start the application
5. Check and uncheck the checkbox (now ToggleStateChanged event was fired)
6. Type some letters to the RadMaskedEditBox (e.g. "aaa")
7. Press tab
Workaround:
RegexMaskTextBoxProvider provider;
private void radCheckBox1_ToggleStateChanged(object sender, Telerik.WinControls.UI.StateChangedEventArgs args)
{
if (args.ToggleState == Telerik.WinControls.Enumerations.ToggleState.On)
{
radMaskedEditBox1 = new RadMaskedEditBox();
radMaskedEditBox1.Mask = "^[0-9]{5}$";
radMaskedEditBox1.MaskType = MaskType.Regex;
radMaskedEditBox1.MaskedEditBoxElement.TextBoxItem.HostedControl.Leave += HostedControl_Leave;
provider = (RegexMaskTextBoxProvider) radMaskedEditBox1.MaskedEditBoxElement.Provider;
}
else if (args.ToggleState == Telerik.WinControls.Enumerations.ToggleState.Off)
{
radMaskedEditBox1.MaskedEditBoxElement.Mask = "";
radMaskedEditBox1.MaskType = MaskType.None;
}
}
private void HostedControl_Leave(object sender, EventArgs e)
{
if (radMaskedEditBox1.MaskType == MaskType.None && provider != null)
{
provider.GetType().GetField("mask", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).SetValue(provider, "*");
}
}
To reproduce:
- Set the mask like this:
private void RadForm1_Load(object sender, EventArgs e)
{
radMaskedEditBox1.MaskType = MaskType.Regex;
radMaskedEditBox1.Mask = "^[0-9]{6} [A-Z]{4} [0-9]{7}$|^[0-9]{5}$";
}
- Start the application, enter five digits and pres Tab.
- The error icon apperas.
Workaround:
- Set the Mask before the MaskType:
radMaskedEditBox1.Mask = "^[0-9]{6} [A-Z]{4} [0-9]{7}$|^[0-9]{5}$";
radMaskedEditBox1.MaskType = MaskType.Regex;