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)
Workaround: manually increase the font of the controls protected override void OnShown(EventArgs e) { base.OnShown(e); var dpi = NativeMethods.GetSystemDpi(); this.Font = new Font(this.Font.Name, this.Font.Size * dpi.X / 96, this.Font.Style); this.radMenu1.Font = new Font(this.radMenu1.Font.Name, this.radMenu1.Font.Size * dpi.X / 96, this.radMenu1.Font.Style); this.radCommandBar1.Font = new Font(this.radCommandBar1.Font.Name, this.radCommandBar1.Font.Size * dpi.X / 96, this.radCommandBar1.Font.Style); }
Workaround: this.radChat1.ChatElement.InputTextBox.TextBoxItem.TextBoxControl.Multiline = true; this.radChat1.ChatElement.InputTextBox.ButtonsStack.Children.Remove(this.radChat1.ChatElement.ShowToolbarButtonElement); this.radChat1.ChatElement.InputTextBox.ButtonsStack.Children.Remove(this.radChat1.ChatElement.SendButtonElement); StackLayoutElement stack = new StackLayoutElement(); stack.MinSize = new Size(0, 60); this.radChat1.ChatElement.InputTextBox.Parent.Children.Add(stack); this.radChat1.ChatElement.InputTextBox.Parent.Children.Remove(this.radChat1.ChatElement.InputTextBox); stack.StretchHorizontally = true; stack.Orientation = Orientation.Horizontal; stack.Children.Add(this.radChat1.ChatElement.InputTextBox); stack.Children.Add(this.radChat1.ChatElement.ShowToolbarButtonElement); stack.Children.Add(this.radChat1.ChatElement.SendButtonElement); this.radChat1.ChatElement.ShowToolbarButtonElement.StretchHorizontally = false; this.radChat1.ChatElement.SendButtonElement.StretchHorizontally = false;
Added in the R3 2018 release: https://docs.telerik.com/devtools/winforms/forms-and-dialogs/form-converter
Workaround: Import using a stream.