Environment: Telerik WinForms 2018.3.1016.40, VS 2013 Pro U5, Win 10 Ent 64 1809 17763.195
Steps:
Create a new WinForm project with default settings
Add a RadForm with default settings
Add a RadScrollablePanel to the RadForm with default settings
Add a RadPanel inside the RadScrollablePanel with default settings
Add a 3 RadRadioButtons to the RadScrollablePanel with default settings
Select all 3
Press Ctrl+X to cut the radio buttons.
Actual Result: Visual Studio will immediately hang and any unsaved project work will be lost.
Actual Desire: To be able cut and paste the 3 radio buttons into the RadPanel, just like normal MS WinForm controls in design-time.
To reproduce:
- Open the Excel-like filtering example in the demo application and sort the second column.
- The sort icon is over the text.
Workaround:
private void RadGridView1_SortChanged(object sender, Telerik.WinControls.UI.GridViewCollectionChangedEventArgs e)
To reproduce:
- Set the MaxDropDownItems and the DefaultItemsCountInDropDown and open the popup on HDPI.
Until released the text can be cleared this way:
GridSearchCellElement searchCell = this.radGridView1.TableElement.FindDescendant<GridSearchCellElement>();
Deleting table right after merged fields are updated causes StackOverflowException.
To reproduce: add a RadLabel and change its cursor to Hand. this.radLabel1.Cursor = Cursors.Hand; The PixelatedHandCursor.png shows the poor quality of the cursor which should be improved. Workaround: https://stackoverflow.com/questions/6016995/un-antialiased-hand-cursor-in-windows-forms-apps/6017174#6017174 public class LinkLabelEx : RadLabel { private const int WM_SETCURSOR = 0x0020; private const int IDC_HAND = 32649; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr LoadCursor(IntPtr hInstance, int lpCursorName); [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern IntPtr SetCursor(IntPtr hCursor); protected override void WndProc(ref Message m) { if (m.Msg == WM_SETCURSOR) { // Set the cursor to use the system hand cursor SetCursor(LoadCursor(IntPtr.Zero, IDC_HAND)); // Indicate that the message has been handled m.Result = IntPtr.Zero; return; } base.WndProc(ref m); } } The ImprovedCursorRendering.png shows the improved cursor.
Implement functionality to rotate the text in a cell.
When the current SpanLayoutBox is split (for example by inserting space), the DocumentPosition created with trackDocumentChangeEvents option (with some of the constructor accepting the boolean 'trackDocumentChangeEvents' parameter) jumps back with two symbols.
How to reproduce: create the following custom cell and notice that the collapsed elements would still occupy space inside the cell. Check the attached screenshot public class PNUDFCellElement : GridDataCellElement { public PNUDFCellElement(GridViewColumn column, GridRowElement row) : base(column, row) { } private CustomStackLayoutElement stack; private RadDropDownListElement radDropDownListElement; private RadDateTimeEditorElement radDateTimeEditorElement; private RadTextBoxControlElement radTextBoxElement; protected override void CreateChildElements() { base.CreateChildElements(); stack = new CustomStackLayoutElement(); stack.StretchHorizontally = true; stack.Orientation = Orientation.Horizontal; radDropDownListElement = new RadDropDownListElement(); radDropDownListElement.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDownList; radDropDownListElement.StretchHorizontally = true; radDateTimeEditorElement = new RadDateTimeEditorElement(); radDateTimeEditorElement.StretchHorizontally = true; radTextBoxElement = new RadTextBoxControlElement(); radTextBoxElement.StretchHorizontally = true; stack.Children.Add(radDropDownListElement); stack.Children.Add(radDateTimeEditorElement); stack.Children.Add(radTextBoxElement); this.Children.Add(stack); } protected override void SetContentCore(object value) { this.radDropDownListElement.Visibility = Telerik.WinControls.ElementVisibility.Collapsed; this.radTextBoxElement.Visibility = Telerik.WinControls.ElementVisibility.Collapsed; this.radDateTimeEditorElement.Visibility = Telerik.WinControls.ElementVisibility.Collapsed; this.DrawText = false; if (this.RowIndex % 3 == 0) { this.radDropDownListElement.Visibility = Telerik.WinControls.ElementVisibility.Visible; this.radDropDownListElement.Text = this.Value + ""; } else if (this.RowIndex % 3 == 1) { this.radTextBoxElement.Visibility = Telerik.WinControls.ElementVisibility.Visible; this.radTextBoxElement.Text = this.Value + ""; } else { this.radDateTimeEditorElement.Visibility = Telerik.WinControls.ElementVisibility.Visible; } base.SetContentCore(value); } } public class CustomDataColumn : GridViewDataColumn { public CustomDataColumn(string fieldName) : base(fieldName) { } public override Type GetCellType(GridViewRowInfo row) { if (row is GridViewDataRowInfo) { return typeof(PNUDFCellElement); } return base.GetCellType(row); } } Workaround: use a custom StackLayoutElemetn public class CustomStackLayoutElement : StackLayoutElement { protected override void ArrangeHorizontally(SizeF finalSize) { RectangleF clientRect = this.GetClientRectangle(finalSize); float stretchableWidth = 0; int stretchableCount = 0; int nonStretchableItems = 0; foreach (RadElement element in this.Children) { if (element.Visibility == ElementVisibility.Collapsed) { continue; } if (element.StretchHorizontally) { stretchableCount++; } else { stretchableWidth += element.DesiredSize.Width; nonStretchableItems++; } } if (nonStretchableItems > 0) { stretchableWidth += ElementSpacing * (nonStretchableItems - 1); } int spacing = this.ElementSpacing; if (stretchableCount > 0) { stretchableWidth = (clientRect.Width - stretchableWidth) / stretchableCount; stretchableWidth -= spacing * stretchableCount; } ArrangeItemsHorizontaly(clientRect, finalSize, stretchableWidth, spacing); } protected override void ArrangeItemsHorizontaly(RectangleF clientRect, SizeF finalSize, float stretchableWidth, float spacing) { float x = clientRect.X; float y = clientRect.Y; List<RadElement> children = new List<RadElement>(this.Children); if (this.Comparer != null) { children.Sort(this.Comparer); } for (int i = 0; i < children.Count; i++) { RadElement element = null; if (this.RightToLeft && this.RightToLeftMode == RightToLeftModes.ReverseItems) { element = children[children.Count - i - 1]; } else { element = children[i]; } if (element.Visibility == ElementVisibility.Collapsed) { continue; } RectangleF proposedRect = new RectangleF(x, y, stretchableWidth, clientRect.Height); RectangleF finalRect = AlignRect(element, proposedRect); if (this.RightToLeft && this.RightToLeftMode == RightToLeftModes.ReverseOffset) { finalRect.X = finalSize.Width - x - finalRect.Width; } this.ArrangeElement(element, clientRect, finalRect, finalSize); x += finalRect.Width + spacing; } } }
To reproduce: run the sample project, open the test.rtf file and start scrolling with the mouse. As a result, you will encounter the following error: ************** Exception Text ************** System.ArgumentException: Parameter is not valid. at System.Drawing.Image.get_RawFormat() at System.Drawing.Graphics.IgnoreMetafileErrors(Image image, Int32& errorStatus) at System.Drawing.Graphics.DrawImage(Image image, Single x, Single y, Single width, Single height) at System.Drawing.Graphics.DrawImage(Image image, RectangleF rect) at Telerik.WinControls.RichTextEditor.UI.GDIPaintingContext.DrawImage(Image image, RectangleF rectangle, Double opacity) at Telerik.WinControls.RichTextEditor.UI.Image.PaintCore(IPaintingContext context) at Telerik.WinControls.RichTextEditor.UI.UIElement.Paint(IPaintingContext context) at Telerik.WinControls.RichTextEditor.UI.FrameworkElement.PaintElement(IGraphics graphics, Single angle, SizeF scale) at Telerik.WinControls.RadElement.DoOwnPaint(IGraphics graphics, Single angle, SizeF scale) at Telerik.WinControls.RadElement.Paint(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintOverride(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChild(RadElement child, IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.VisualElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.Paint(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintOverride(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChild(RadElement child, IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.VisualElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.Paint(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintOverride(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChild(RadElement child, IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.VisualElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.Paint(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintOverride(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChild(RadElement child, IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.VisualElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.Paint(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintOverride(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChild(RadElement child, IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.VisualElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.Paint(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintOverride(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChild(RadElement child, IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.VisualElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.Paint(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintOverride(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChild(RadElement child, IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.VisualElement.PaintChildren(IGraphics graphics, Rectangle clipRectange, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadElement.Paint(IGraphics graphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadItem.PaintOverride(IGraphics screenRadGraphics, Rectangle clipRectangle, Single angle, SizeF scale, Boolean useRelativeTransformation) at Telerik.WinControls.RadControl.OnPaint(PaintEventArgs e) at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer) at System.Windows.Forms.Control.WmPaint(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ScrollableControl.WndProc(Message& m) at Telerik.WinControls.RadControl.WndProc(Message& m) at Telerik.WinControls.UI.RadRichTextEditor.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)