I have a custom Fluent theme as a package, it would be nice if there was a way to load packages (Embedded Resource or files) with the RadThemeManager.
Rather than typing this: Telerik.WinControls.ThemeResolutionService.LoadPackageResource("GUI.Themes.Fluent_Custom.tssp");
Right now the RadThemeManager only supports XML files. Feeding it a tssp file doesn't work.
For it to show up in design-time I have to assign it all of the unpackaged XML files and then delete the RadThemeManager for the theme to show up, otherwise the load time is like 7 seconds, where as embedded packages load super fast.
The fluent theme has a lot of XML files and this is a huge pain, supporting 1 Embedded Resource tssp package would be nice.
Would also be nice if the RadThemeManager could apply/change a theme globally somewhere in the SmartTag menu or RadThemeManager properties.
Instead of having to type this: ThemeResolutionService.ApplicationThemeName = "Fluent_Custom";
Please refer to the provided sample gif file. You will notice that when you are dragging within the same RadGridView control, there is a horizontal line indicating the drop position. The image is controlled by the RadGridView.TableElement.RowDragHint property which specifies the horizontal line illustrating the drop position.
This horizontal line is missing when you drop over another target grid control.
In this case, we have an MS standard Form with control position on the form. Each of the controls has the right anchor. Moving the form to a monitor with a higher resolution messed up the size of the controls.
Use the attached sample project.
Sceen 1 (Screen with program shortcuts) on the right in the gif: this screen has display scale 125%
Screen 2 (Screen with the Form) on the left in the gif: this screen has display scale 100%
When all three toolwindows are placed in the forms, there is no issue. The Dropdown list of ToolWindow1 (floating, dockable..) when opened is placed correctly.
If I moved the ToolWindow3 from Screen2 to Screen1 and make it the most recent active window (by clicking on it), I go back to the Screen2 and open the dropdown list of Toolwindow1, this list's position is now wrong and the text size bigger. This is because it takes the display scale (125%) of the screen where the most recent active toolwindow (ToolWindow3 ) is.
If I popup the ToolWindow2, place it in Screen2 (the same screen with ToolWindow1), make ToolWindow2 the most recent active window, and open the dropdown list of Toolwindow1, this list's position is now correct and the text size normal. This is because it takes the display scale (100%) of the screen where the most recent active toolwindow (ToolWindow2 ) is.
Workaround: add app.manifest file and declare the application as DPI aware:
How to reproduce: check the attached video Workaround: select a color from a different tab or use the color picker
The performance of the DayView when the control is bound to a large number of recurring appointments and it is grouped by resources needs to be improved.
Implement functionality to rotate the text in a cell.
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.
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); }
How to reproduce: enabled High DPI scaling and create a form as an MDI child with a RadDataEntry control in it Workaround: handle the Shown event of the MDI child and manually perform the scaling private void radButtonElement1_Click(object sender, EventArgs e) { var view = new RadForm1 { MdiParent = this }; view.Shown += View_Shown; view.Show(); } private void ScaleRadControls(Control c) { foreach (var item in c.Controls) { Control control = item as Control; if (control == null) { continue; } this.mi.Invoke(control, new object[] { this.FormElement.DpiScaleFactor, BoundsSpecified.All }); ScaleRadControls(control); } } MethodInfo mi; private void View_Shown(object sender, EventArgs e) { this.mi = typeof(Control).GetMethod("ScaleControl", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(SizeF), typeof(BoundsSpecified) }, null); RadForm1 v = sender as RadForm1; if (v != null) { ScaleRadControls(v.radDataEntry1.PanelContainer); } }