Currently, this can be achieve with this code: TextInfo textInfo = new CultureInfo("en-US", false).TextInfo; bool updating = false; void radTextBox1_TextChanging(object sender, TextChangingEventArgs e) { if (!updating) { int pos = radTextBox1.TextBoxElement.TextBoxItem.SelectionStart; updating = true; radTextBox1.Text = textInfo.ToTitleCase(radTextBox1.Text); radTextBox1.TextBoxElement.TextBoxItem.SelectionStart = pos; updating = false; } }
Users should be able to increment the whole value of the RadMaskedEditBox using the Up/Down arrow keys or Mouse Wheel
ADD. RadTextBox - there should be a mode whether the undo should bring back the previous word or to work for each character
ADD. RadTextBox - add redo functionality
The textbox should increase its size when entering text.
One should be able to change the color of the RadTextBox text when it is disabled.
Workaround: override the ProcessCmdKey method of the form and activate the desired control: protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData== Keys.Tab) { this.ActiveControl = this.radPopupEditor2.PopupEditorElement.TextBoxElement.TextBoxItem.HostedControl; return true; } return base.ProcessCmdKey(ref msg, keyData); } IMPORTANT!!! Tab key should navigate to the next control even if the popup is opened.
To reproduce: - Use the following format: radDateTimePicker1.Format = DateTimePickerFormat.Custom; radDateTimePicker1.CustomFormat = "MM/dd/yyyy"; - Clear the date and try to enter 01/01/2017 (see attched video) Workaround: radDateTimePicker1.NullDate = DateTime.MinValue.AddYears(1);
to reproduce this bug : add RadDateTimePicker and set culture to fa-IR change the header navigation mode to zoom with : Me.radDateTimePicker1.DateTimePickerElement.Calendar.HeaderNavigationMode = HeaderNavigationMode.Zoom popup the date time picker then georgian dates are displayed i'll attach screenshots of what happening.
How to reproduce: Just open the popup with the Alt and Down arrow key combination, you will notice that the value changes Workaround: public partial class Form1 : Form { public Form1() { InitializeComponent(); this.radDateTimePicker1.DateTimePickerElement.KeyDown += DateTimePickerElement_KeyDown; } private void DateTimePickerElement_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.F4 || (e.KeyData == (Keys.Alt | Keys.Down))) { e.Handled = true; } } }
To reproduce: public Form1() { InitializeComponent(); this.radTextBox1.Text = "abcd"; this.radTextBox2.Text = "abcd"; this.radTextBoxControl1.Text = "abcd"; this.radTextBoxControl2.Text = "abcd"; this.radTextBox2.Multiline = true; this.radTextBoxControl2.Multiline = true; this.textBox1.Text= "abcd"; this.textBox2.Text= "abcd"; this.textBox2.Multiline = true; } Workaround: set the Multiline property to true in the Form.Load event. Second workaround: this.radTextBox2.TextBoxElement.TextBoxItem.Margin = new Padding(-2, 0, 0, 0);
To reproduce: - select the whole date and press delete. - the value should be cleared at this point not when the control loses the focus. Workaround: Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load AddHandler RadDateTimePicker1.KeyDown, AddressOf KeyDown_EventHandler End Sub Private Sub KeyDown_EventHandler(sender As Object, e As KeyEventArgs) If e.KeyData = Keys.Delete Then e.Handled = True RadDateTimePicker1.SetToNullValue() End If End Sub
To reproduce: Add a RadTextBoxControl and set the SelectionColor property to Red. You will notice that the selection color is semi-transparent and it seems like pink. In order to obtain real Red selection color, it is necessary to set the SelectionOpacity property to 255. However, the selected text is not visible. Please refer to the attached screenshot. Workaround: public class CustomTextBoxControl : RadTextBoxControl { public override string ThemeClassName { get { return typeof(RadTextBoxControl).FullName; } } protected override RadTextBoxControlElement CreateTextBoxElement() { return new CustomRadTextBoxControlElement(); } } public class CustomRadTextBoxControlElement : RadTextBoxControlElement { protected override Type ThemeEffectiveType { get { return typeof(RadTextBoxControlElement); } } protected override TextBoxViewElement CreateViewElement() { return new CustomTextBoxViewElement(); } } public class CustomTextBoxViewElement : TextBoxViewElement { protected override void PaintChildren(IGraphics graphics, Rectangle clipRectange, float angle, SizeF scale, bool useRelativeTransformation) { this.SelectionPrimitive.PaintPrimitive(graphics, angle, scale); base.PaintChildren(graphics, clipRectange, angle, scale, useRelativeTransformation); } protected override void PostPaintChildren(IGraphics graphics, Rectangle clipRectange, float angle, SizeF scale) { if (this.SelectionPrimitive == null) { return; } if (this.Multiline && this.WordWrap) { this.SelectionPrimitive.TextBoxElement.Navigator.RestoreSelection(); } } }
To reproduce: 1. Enter some text and click the first button. Both properties, Text and Value contain the expected value. 2. Click the second button to clear the text and value. 3. Enter some text again and click the first button. You will notice that the Value remains empty. public RadForm1() { InitializeComponent(); this.radMaskedEditBox1.MaskType = Telerik.WinControls.UI.MaskType.None; this.radMaskedEditBox1.Mask = "CCCCCCC"; } private void radButton1_Click(object sender, EventArgs e) { this.radLabel1.Text = "Text: " + this.radMaskedEditBox1.Text; this.radLabel2.Text = "Value: " + this.radMaskedEditBox1.Value + ""; } private void radButton2_Click(object sender, EventArgs e) { this.radMaskedEditBox1.Clear(); } Workaround: use MaskType.Standard
The issue exist in the versions after Q1 2017 Workaround: Class MyTextBox Inherits RadTextBoxControl Protected Overrides Function CreateTextBoxElement() As RadTextBoxControlElement Return New MyTextBoxElement() End Function End Class Class MyTextBoxElement Inherits RadTextBoxControlElement Protected Overrides ReadOnly Property ThemeEffectiveType As Type Get Return GetType(RadTextBoxControlElement) End Get End Property Protected Overrides Function CreateViewElement() As TextBoxViewElement Return New MyWrapPanel End Function End Class Class MyWrapPanel Inherits TextBoxViewElement Protected Overrides Function InsertTextBlocks(index As Integer, text As String, blockType As Type) As Integer If String.IsNullOrEmpty(text) Then Return index End If Dim textBuilder As New StringBuilder() For i As Integer = 0 To text.Length - 1 Dim symbol As Char = text(i) If Char.IsWhiteSpace(symbol) OrElse symbol = TextBoxViewElement.TabSymbol OrElse symbol = TextBoxViewElement.LineFeedSymbol OrElse symbol = TextBoxViewElement.CarriageReturnSymbol Then If textBuilder.Length > 0 Then Dim textBlock As ITextBlock = Me.CreateBlock(textBuilder.ToString(), blockType) If index >= Me.Children.Count Then Me.Children.Add(TryCast(textBlock, RadElement)) index = Me.Children.Count - 1 textBlock.Index = index Else textBlock.Index = index Me.Children.Insert(index, TryCast(textBlock, RadElement)) End If textBuilder = New StringBuilder() index += 1 End If Dim tabBlock As ITextBlock = Me.CreateBlock(symbol.ToString(), blockType) tabBlock.Index = index Me.Children.Insert(index, TryCast(tabBlock, RadElement)) index += 1 Continue For End If textBuilder.Append(symbol) Next If textBuilder.Length > 0 Then Dim textBlock As ITextBlock = Me.CreateBlock(textBuilder.ToString(), blockType) textBlock.Index = index Me.Children.Insert(index, TryCast(textBlock, RadElement)) index += 1 End If Return index - 1 End Function End Class
Please refer to the attached sample project and attached gif file which illustrates the desired behavior when RadForm1 is run. If you run RadForm2 which uses RadDropDownList, the binding doesn't work as expected. Workaround: this.radDropDownList1.SelectedIndexChanged += RadDropDownList1_SelectedIndexChanged; this.radDropDownList1.DisplayMember = "Naziv"; this.radDropDownList1.ValueMember = "Id"; this.radDropDownList1.DataSource = bs; private void RadDropDownList1_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e) { if (e.Position > -1) { Roditelj parent = this.radDropDownList1.SelectedItem.DataBoundItem as Roditelj; this.radDropDownList2.DataSource = null; this.radDropDownList2.DisplayMember = "Naziv"; this.radDropDownList2.ValueMember = "Id"; this.radDropDownList2.DataSource = parent.Djeca; } }
Please refer to the attached sample project and try to open the form's designer. If you comment [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] for the EditarTextBox property (typeof(RadTextBox)), clean and rebuild, the designer is opened as expected. Workaround: use RadTextBoxControl.
How to reproduce: this.radMaskedEditBox1.Font = new System.Drawing.Font("Segoe UI", 20F); this.radMaskedEditBox1.MaskType = Telerik.WinControls.UI.MaskType.Standard; this.radMaskedEditBox1.Mask = "#####-######"; this.radMaskedEditBox1.Value = "47997006886"; Workaround: this.radMaskedEditBox1.Font = new System.Drawing.Font("Segoe UI", 20F); this.radMaskedEditBox1.MaskType = Telerik.WinControls.UI.MaskType.Standard; this.radMaskedEditBox1.Mask = "#####-######"; this.radMaskedEditBox1.Text = "47997006886";
To reproduce: - Add text that contain multiple blank lines to a textBox - Set SpellCheckMode to AllAtOnce - Perform a spell check.