RadForm with UserControl DPI problem

6 posts, 0 answers
  1. Aroled
    Aroled avatar
    2 posts
    Member since:
    Oct 2015

    Posted 09 Sep 2018 Link to this post

    Hello.
    In my program I need to create a UserControl that contains Telerik Controls and place them on forms (using RadForm). Everything looks fine until you change the DPI settings in the system. Image with the result of the work of the form in the attached files. At the top of the screen, it's just on the form, at the bottom I'm using UserControl. Tell me how to fix it. For RadForm and UserControl, I set AutoScaleMode.DPI and also I need to use the font Segoe UI 9.75

    I use Telerik 2018.2 with .Net 3.5 Below I gave examples of my code (Forms and controls). I very much rely on your help and advice.

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace Standalone.DpiTest
    {
        public partial class TestControl : UserControl
        {
            public TestControl()
            {
                InitializeComponent();
            }
             
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.IContainer components = null;
     
            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
     
            #region Component Designer generated code
     
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
                this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
                this.radLabel1 = new Telerik.WinControls.UI.RadLabel();
                this.radLabel2 = new Telerik.WinControls.UI.RadLabel();
                this.radTextBox1 = new Telerik.WinControls.UI.RadTextBox();
                this.radTextBox2 = new Telerik.WinControls.UI.RadTextBox();
                this.tableLayoutPanel1.SuspendLayout();
                ((System.ComponentModel.ISupportInitialize)(this.radLabel1)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.radLabel2)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.radTextBox1)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.radTextBox2)).BeginInit();
                this.SuspendLayout();
                //
                // tableLayoutPanel1
                //
                this.tableLayoutPanel1.ColumnCount = 2;
                this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
                this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
                this.tableLayoutPanel1.Controls.Add(this.radTextBox2, 1, 1);
                this.tableLayoutPanel1.Controls.Add(this.radLabel1, 0, 0);
                this.tableLayoutPanel1.Controls.Add(this.radLabel2, 0, 1);
                this.tableLayoutPanel1.Controls.Add(this.radTextBox1, 1, 0);
                this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
                this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
                this.tableLayoutPanel1.Name = "tableLayoutPanel1";
                this.tableLayoutPanel1.RowCount = 3;
                this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
                this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
                this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
                this.tableLayoutPanel1.Size = new System.Drawing.Size(562, 336);
                this.tableLayoutPanel1.TabIndex = 0;
                //
                // radLabel1
                //
                this.radLabel1.Font = new System.Drawing.Font("Segoe UI", 9.75F);
                this.radLabel1.Location = new System.Drawing.Point(4, 4);
                this.radLabel1.Margin = new System.Windows.Forms.Padding(4);
                this.radLabel1.Name = "radLabel1";
                this.radLabel1.Size = new System.Drawing.Size(65, 21);
                this.radLabel1.TabIndex = 0;
                this.radLabel1.Text = "Name: ";
                //
                // radLabel2
                //
                this.radLabel2.Font = new System.Drawing.Font("Segoe UI", 9.75F);
                this.radLabel2.Location = new System.Drawing.Point(4, 35);
                this.radLabel2.Margin = new System.Windows.Forms.Padding(4);
                this.radLabel2.Name = "radLabel2";
                this.radLabel2.Size = new System.Drawing.Size(65, 21);
                this.radLabel2.TabIndex = 1;
                this.radLabel2.Text = "Address: ";
                //
                // radTextBox1
                //
                this.radTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
                this.radTextBox1.Font = new System.Drawing.Font("Segoe UI", 9.75F);
                this.radTextBox1.Location = new System.Drawing.Point(77, 4);
                this.radTextBox1.Margin = new System.Windows.Forms.Padding(4);
                this.radTextBox1.Name = "radTextBox1";
                this.radTextBox1.Size = new System.Drawing.Size(481, 23);
                this.radTextBox1.TabIndex = 2;
                //
                // radTextBox2
                //
                this.radTextBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
                this.radTextBox2.Font = new System.Drawing.Font("Segoe UI", 9.75F);
                this.radTextBox2.Location = new System.Drawing.Point(77, 35);
                this.radTextBox2.Margin = new System.Windows.Forms.Padding(4);
                this.radTextBox2.Name = "radTextBox2";
                this.radTextBox2.Size = new System.Drawing.Size(481, 23);
                this.radTextBox2.TabIndex = 3;
                //
                // TestControl
                //
                this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
                this.Controls.Add(this.tableLayoutPanel1);
                this.Name = "TestControl";
                this.Size = new System.Drawing.Size(562, 336);
                this.tableLayoutPanel1.ResumeLayout(false);
                this.tableLayoutPanel1.PerformLayout();
                ((System.ComponentModel.ISupportInitialize)(this.radLabel1)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.radLabel2)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.radTextBox1)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.radTextBox2)).EndInit();
                this.ResumeLayout(false);
     
            }
     
            #endregion
     
            private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
            private Telerik.WinControls.UI.RadTextBox radTextBox2;
            private Telerik.WinControls.UI.RadLabel radLabel1;
            private Telerik.WinControls.UI.RadLabel radLabel2;
            private Telerik.WinControls.UI.RadTextBox radTextBox1;
        }
         
        public partial class DpiTestForm : RadForm
        {
            public DpiTestForm()
            {
                InitializeComponent();
            }
             
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.IContainer components = null;
     
            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
     
            #region Windows Form Designer generated code
     
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
                this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
                this.radTextBox2 = new Telerik.WinControls.UI.RadTextBox();
                this.radLabel1 = new Telerik.WinControls.UI.RadLabel();
                this.radLabel2 = new Telerik.WinControls.UI.RadLabel();
                this.radTextBox1 = new Telerik.WinControls.UI.RadTextBox();
                this.testControl1 = new Standalone.DpiTest.TestControl();
                this.tableLayoutPanel1.SuspendLayout();
                ((System.ComponentModel.ISupportInitialize)(this.radTextBox2)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.radLabel1)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.radLabel2)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.radTextBox1)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
                this.SuspendLayout();
                //
                // tableLayoutPanel1
                //
                this.tableLayoutPanel1.ColumnCount = 2;
                this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
                this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
                this.tableLayoutPanel1.Controls.Add(this.radTextBox2, 1, 1);
                this.tableLayoutPanel1.Controls.Add(this.radLabel1, 0, 0);
                this.tableLayoutPanel1.Controls.Add(this.radLabel2, 0, 1);
                this.tableLayoutPanel1.Controls.Add(this.radTextBox1, 1, 0);
                this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
                this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
                this.tableLayoutPanel1.Name = "tableLayoutPanel1";
                this.tableLayoutPanel1.RowCount = 3;
                this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
                this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
                this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
                this.tableLayoutPanel1.Size = new System.Drawing.Size(292, 114);
                this.tableLayoutPanel1.TabIndex = 1;
                //
                // radTextBox2
                //
                this.radTextBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
                this.radTextBox2.Font = new System.Drawing.Font("Segoe UI", 9.75F);
                this.radTextBox2.Location = new System.Drawing.Point(73, 35);
                this.radTextBox2.Margin = new System.Windows.Forms.Padding(4);
                this.radTextBox2.Name = "radTextBox2";
                this.radTextBox2.Size = new System.Drawing.Size(215, 23);
                this.radTextBox2.TabIndex = 3;
                //
                // radLabel1
                //
                this.radLabel1.Font = new System.Drawing.Font("Segoe UI", 9.75F);
                this.radLabel1.Location = new System.Drawing.Point(4, 4);
                this.radLabel1.Margin = new System.Windows.Forms.Padding(4);
                this.radLabel1.Name = "radLabel1";
                this.radLabel1.Size = new System.Drawing.Size(49, 21);
                this.radLabel1.TabIndex = 0;
                this.radLabel1.Text = "Name: ";
                //
                // radLabel2
                //
                this.radLabel2.Font = new System.Drawing.Font("Segoe UI", 9.75F);
                this.radLabel2.Location = new System.Drawing.Point(4, 35);
                this.radLabel2.Margin = new System.Windows.Forms.Padding(4);
                this.radLabel2.Name = "radLabel2";
                this.radLabel2.Size = new System.Drawing.Size(61, 21);
                this.radLabel2.TabIndex = 1;
                this.radLabel2.Text = "Address: ";
                //
                // radTextBox1
                //
                this.radTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
                this.radTextBox1.Font = new System.Drawing.Font("Segoe UI", 9.75F);
                this.radTextBox1.Location = new System.Drawing.Point(73, 4);
                this.radTextBox1.Margin = new System.Windows.Forms.Padding(4);
                this.radTextBox1.Name = "radTextBox1";
                this.radTextBox1.Size = new System.Drawing.Size(215, 23);
                this.radTextBox1.TabIndex = 2;
                //
                // testControl1
                //
                this.testControl1.Dock = System.Windows.Forms.DockStyle.Fill;
                this.testControl1.Location = new System.Drawing.Point(0, 114);
                this.testControl1.Name = "testControl1";
                this.testControl1.Size = new System.Drawing.Size(292, 156);
                this.testControl1.TabIndex = 2;
                //
                // DpiTestForm
                //
                this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
                this.ClientSize = new System.Drawing.Size(292, 270);
                this.Controls.Add(this.testControl1);
                this.Controls.Add(this.tableLayoutPanel1);
                this.Name = "DpiTestForm";
                //
                //
                //
                this.RootElement.ApplyShapeToControl = true;
                this.Text = "DpiTestForm";
                this.tableLayoutPanel1.ResumeLayout(false);
                this.tableLayoutPanel1.PerformLayout();
                ((System.ComponentModel.ISupportInitialize)(this.radTextBox2)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.radLabel1)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.radLabel2)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.radTextBox1)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this)).EndInit();
                this.ResumeLayout(false);
     
            }
     
            #endregion
     
            private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
            private Telerik.WinControls.UI.RadTextBox radTextBox2;
            private Telerik.WinControls.UI.RadLabel radLabel1;
            private Telerik.WinControls.UI.RadLabel radLabel2;
            private Telerik.WinControls.UI.RadTextBox radTextBox1;
            private TestControl testControl1;
        }
    }
  2. Aroled
    Aroled avatar
    2 posts
    Member since:
    Oct 2015

    Posted 09 Sep 2018 Link to this post

    form screenshot (ыorry could not find how to edit the previous post)
  3. Dimitar
    Admin
    Dimitar avatar
    2984 posts

    Posted 10 Sep 2018 Link to this post

    Hello Aroled,

    The form will handle the scaling, this is why you need to set the AutoScaleMode of the user control to None. More inforation is available here: HDPI Tips and Tricks.

    I hope this will be useful.

    Regards,
    Dimitar
    Progress Telerik
    Get quickly onboard and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
  4. zozo
    zozo avatar
    3 posts
    Member since:
    Sep 2018

    Posted 16 Sep 2018 Link to this post

    no really any idea to help
  5. Jack
    Jack avatar
    7 posts
    Member since:
    Oct 2018

    Posted 30 Oct 2018 Link to this post

    In my opinion, AutoScaleMode doesn't always work. So you need to add something else.
  6. Dimitar
    Admin
    Dimitar avatar
    2984 posts

    Posted 31 Oct 2018 Link to this post

    Hello Jack,

    The HDPI scaling works differently in the different Windows versions and there can be cases where this is not working. I would suggest posting a support ticket and describing the exact case and sharing your project along with the Windows version. This way we will be able to properly investigate this and provide you with a solution.

    Thank you in advance for your patience and cooperation. 

    Regards,
    Dimitar
    Progress Telerik
    Get quickly onboard and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
Back to Top