Workaround: public Form1() { InitializeComponent(); this.radMaskedEditBox1.MaskedEditBoxElement.TextBoxItem.KeyPress += TextBoxItem_KeyPress; } private void TextBoxItem_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == '-') { this.radMaskedEditBox1.MaskedEditBoxElement.TextBoxItem.SelectionStart = this.radMaskedEditBox1.MaskedEditBoxElement.TextBoxItem.Text.Length; } }
Workaround: 1) set the CurrencyNegativePattern to 1 Alternatively: 2) check if the the formatted text is surrounded with brackets and if yes set the value of the masked edit box to be negative
To reproduce: 1. Add UserControl 2. Drag and drop RadPopupEditor and RadPopupContainer 3. Open the smart tag of RadPopupEditor and try to set the AssociatedControl property. You will see error message from attached image. Workaround: Set the AssociatedControl at run time. Here is the code snippet: For C#: public UserControl1() { InitializeComponent(); this.radPopupEditor1.AssociatedControl = this.radPopupContainer1; } For VB: Public Class UserControl1 Inherits UserControl Public Sub New() InitializeComponent() Me.RadPopupEditor1.AssociatedControl = Me.RadPopupContainer1 End Sub End Class
Workaround: RadPopupContainer1.BindingContext = New BindingContext()
To reproduce: use the following code: public Form1() { InitializeComponent(); Label l1 = new Label(); l1.Text = "Label&1"; l1.Location = new Point(10, 20); this.Controls.Add(l1); RadTextBox tb = new RadTextBox(); tb.Location = new Point(150, 20); this.Controls.Add(tb); Label l2 = new Label(); l2.Text = "Label&2"; l2.Location = new Point(10, 50); this.Controls.Add(l2); RadTextBoxControl tbc = new RadTextBoxControl(); tbc.Location = new Point(150, 50); this.Controls.Add(tbc); Label l3 = new Label(); l3.Text = "Label&3"; l3.Location = new Point(10, 80); this.Controls.Add(l3); RadMaskedEditBox meb = new RadMaskedEditBox(); meb.Location = new Point(150,80); this.Controls.Add(meb); } If you press Alt +2, the RadTextBoxControl will get focus. However, if you press Alt + 3, the RadMaskedEditBox will not display the caret. The control actually gets focus, but the inner text box does not. Workaround: private void radMaskedEditBox1_GotFocus(object sender, EventArgs e) { this.radMaskedEditBox1.MaskedEditBoxElement.TextBoxItem.TextBoxControl.Focus(); }
Workaround: this.radDateTimePicker1.DateTimePickerElement.ShowTimePicker = true; RadDateTimePickerCalendar calendarBehavior = this.radDateTimePicker1.DateTimePickerElement.GetCurrentBehavior() as RadDateTimePickerCalendar; calendarBehavior.PopupControl.Opened += PopupControl_Opened; calendarBehavior.PopupControl.Opening+=PopupControl_Opening; calendarBehavior.PopupControl.Closing+=PopupControl_Closing; calendarBehavior.PopupControl.Closed+=PopupControl_Closed;
Workaround: this.radTextBoxControl1.TextBoxElement.AutoCompleteDropDown.PopupOpening += AutoCompleteDropDown_PopupOpening; private void AutoCompleteDropDown_PopupOpening(object sender, CancelEventArgs args) { RadPopupOpeningEventArgs a = args as RadPopupOpeningEventArgs; if (a != null ) { a.CustomLocation = new Point(a.CustomLocation.X,a.CustomLocation.Y + 20); } }
To reproduce: 1. Add a RadTextBox 2. Set the AutoCompleteMode property to SuggestAppend 3. Add a RadSpellChecker and set the AutoSpellCheckControl property the text box 4. Start typing. You will notice that the autocomplete functionality behaves as expected. But the incorrect words are not underlined. Workaround: use RadTextBoxControl
The performance can be improved by creating the RadContextMenu only when it is needed not when the element is created.
The initial loading performance can be improved.
To reproduce: use Korean (Microsoft IME) keayboard this.radTextBoxControl1.ImeMode = System.Windows.Forms.ImeMode.Hangul; Workaround: this.radTextBoxControl1.KeyUp+=radTextBoxControl1_KeyUp; private void radTextBoxControl1_KeyUp(object sender, KeyEventArgs e) { this.radTextBoxControl1.SelectionStart = this.radTextBoxControl1.Text.Length; }
Note: the issue can be also observed in the textbox editor in RadGridView.
Please refer to the attached gif file. Workaround: public Form1() { InitializeComponent(); this.radSpellChecker1.AutoSpellCheckControl = this.radTextBoxControl1; this.radTextBoxControl1.Multiline = true; this.radTextBoxControl1.ContextMenuOpening += radTextBoxControl1_ContextMenuOpening; } public static bool containsError = false; public static bool isMisspelledWord = true; private void radTextBoxControl1_ContextMenuOpening(object sender, TreeBoxContextMenuOpeningEventArgs e) { if (!isMisspelledWord && containsError) { //do not show the context when you click over a correct word e.Cancel = true; } } public class MyTextBox : RadTextBoxControl { protected override RadTextBoxControlElement CreateTextBoxElement() { return new MyTextBoxElement(); } public override string ThemeClassName { get { return typeof(RadTextBoxControl).FullName; } } } public class MyTextBoxElement : RadTextBoxControlElement { RadSpellChecker sp = new RadSpellChecker(); protected override void OnMouseDown(MouseEventArgs e) { sp.AutoSpellCheckControl = this.ElementTree.Control; containsError = false; isMisspelledWord = true; if (e.Button == System.Windows.Forms.MouseButtons.Right) { Point location = this.ElementTree.Control.PointToClient(Cursor.Position); TextPosition position = this.Navigator.GetPositionFromPoint(location); this.Navigator.CaretPosition = position; if (this.Multiline) { this.Navigator.ScrollToCaret(); } ITextBoxNavigator navigator = this.Navigator; TextPosition caretPosition = navigator.CaretPosition; LineInfo line = caretPosition.Line; ITextBlock textBlock = caretPosition.TextBlock; string clickedWordInRadTextBox = textBlock.Text; if (string.IsNullOrEmpty(clickedWordInRadTextBox) || clickedWordInRadTextBox == " ") { return; } TextBoxSpellChecker tbSpellChecker = sp.GetControlSpellChecker(typeof(RadTextBoxControl)) as TextBoxSpellChecker; ICollection<string> suggestions = tbSpellChecker.SpellChecker.GetSuggestions(clickedWordInRadTextBox); if (suggestions.Count > 0) { containsError = true; } if (tbSpellChecker.SpellChecker.CheckWordIsCorrect(clickedWordInRadTextBox)) { isMisspelledWord = false; } base.OnMouseDown(e); } } protected override Type ThemeEffectiveType { get { return typeof(RadTextBoxControlElement); } } }
To reproduce: - Set the value of the TimePicker to a value that is different from the current day. - Select the time part and press the up arrow button.
To reproduce: AddHandler RadAutoCompleteBox1.Validating, Sub() 'add new item to list Dim txt As String = RadAutoCompleteBox1.Text Dim add As String = String.Empty If Not String.IsNullOrEmpty(txt) Then If Not txt.EndsWith(";") Then 'new item! If txt.Contains(";") Then _addWg = txt.Split(";").Last Else _addWg = txt End If RadAutoCompleteBox1.Text = RadAutoCompleteBox1.Text & ";" End If End If End Sub '--------------- 'We update the datasource when we lost focus.... AddHandler RadAutoCompleteBox1.LostFocus, Sub() If Not String.IsNullOrEmpty(_addWg) AndAlso Not wgAcSource.Contains(_addWg) Then wgAcSource.Add(_addWg) RadAutoCompleteBox1.AutoCompleteDataSource = Nothing RadAutoCompleteBox1.AutoCompleteDataSource = wgAcSource _addWg = String.Empty End If End Sub Workaround: Add the item and reset the data source in the KeyDown event for example when the user presses Enter.
1. Add RadTextBoxControl and RadSpellChecker 2. Set the AutoSpellCheckControl property to radTextBoxControl1 3. Type text "(a) is (b) is (c) (d)" and you will see that the letters in parentheses are underline like incorrect.
To reproduce: add a RadSpellChecker and a RadTextBoxControl. Set the RadSpellChecker.AutoSpellCheckControl property to the RadTextBoxControl. Please refer to the attached screenshot. Workaround: Dim tbSpellChecker As TextBoxSpellChecker = Me.RadSpellChecker1.GetControlSpellChecker(GetType(RadTextBoxControl)) Dim fi As FieldInfo = GetType(TextBoxSpellChecker).GetField("punctuation", BindingFlags.NonPublic Or BindingFlags.Instance) Dim chars As Char() = " .,;:!?-\\/|~!@#$%^&*()_+=".ToCharArray() fi.SetValue(tbSpellChecker, chars)
To reproduce: add a RadSpellChecker and a RadTextBoxControl and set the RadSpellChecker.AutoSpellCheckControl property to the RadTextBoxControl. When you type "Thisis", the red underline appears, indicating the error. However, if you use the context menu to correct the misspelled word, the red underline remains. Please refer to the attached gif file. Workaround: stop the default context menu and use the spell checking form instead: private void radTextBoxControl1_ContextMenuOpening(object sender,TreeBoxContextMenuOpeningEventArgs e) { e.Cancel = true; this.radSpellChecker1.Check(this.radTextBoxControl1); }
To reproduce: Change the monitors positions in the settings panel and try out on both monitors. Please refer to the attached file. Workaround: Dim tbLocation = Point.Empty Sub New() InitializeComponent() Me.RadTextBox1.Text = "Once uppon " Dim tbSpellChecker As TextBoxSpellChecker = Me.RadSpellChecker1.GetControlSpellChecker(GetType(RadTextBox)) AddHandler tbSpellChecker.DropDownMenu.PopupOpening, AddressOf PopupOpening AddHandler Me.RadTextBox1.TextBoxElement.TextBoxItem.HostedControl.MouseDown, AddressOf RadTextBox1_MouseDown End Sub Private Sub PopupOpening(sender As Object, args As System.ComponentModel.CancelEventArgs) Dim e As RadPopupOpeningEventArgs = TryCast(args, RadPopupOpeningEventArgs) If e IsNot Nothing Then e.CustomLocation = tbLocation End If End Sub Private Sub RadTextBox1_MouseDown(sender As Object, e As MouseEventArgs) If e.Button = Windows.Forms.MouseButtons.Right Then tbLocation = Me.RadTextBox1.PointToScreen(e.Location) End If End Sub
To reproduce: 1. Drag and drop RadColorBox 2. Add localization provider. Use the following article http://www.telerik.com/help/winforms/forms-and-dialogs-colordialog-localization.html 3. Open ColorDialogForm and choose color which name was localized too. Close the form 54 You will see that the text of RadColorBox is not localized name, it`s system name. Workaround: 1. Subscribe to the ValueChanged event 2. Replace the text of RadColorBox with localized color name void radColorBox_ValueChanged(object sender, EventArgs e) { string localizedColor = Telerik.WinControls.UI.ColorDialogLocalizationProvider.CurrentProvider.GetLocalizedString(this.radColorBox.ColorDialog.SelectedColor.Name); this.radColorBox.ColorBoxElement.TextBoxItem.Text = localizedColor; }