怎样在c#中做个窗体并能够自适应屏幕的大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在c#中做个窗体并能够自适应屏幕的大小相关的知识,希望对你有一定的参考价值。

我来补充一下,在窗体上建立控件或者自定义控件尽量不要使用工具箱里面的,写构造控件过程:

//全局申明控件
Button btn,btn1;
TextBox tx1,tx2;
MyControl myc; 
//创建控件
void lize()

   btn=new Button();
   btn.Text=...;
   ...
   myc=New MyControl();
   btn.Click+=(object o,EventArgs re)=>
   
      //...事件
   
   //....
   this.Controls.Add(btn);
   //...
 
//分辨率调整这是窗体的尺寸改变事件或者写在paint事件里

private void form1_SizeChanged()

   int wid=this.ClientSize.Width;
   int hei=this.ClientSize.Height;
   btn.Left=(int)(wid*0.05);
   btn.Width=80;
   btn.Top=(int)(hei*0.02);
   //...
   tx1.Left=btn.Left+btn.Height+20;
   //...

把lize()写在窗体初始化类里面,这样,怎么看他都会有尺寸变化了,当然实际过程中,要求高,字体也变化计算字体跟尺寸成一定比例,这个比例可以设置一个限度,比如800*600分辨率哪些字体是多大,1024*768范围字体尺寸,或者大于这个尺寸字体又分别是一个尺寸,归纳到一个类里面,应用类就将字体分辨率也写进去了。

参考技术A 设置 窗体的 WindowState=Maximized 这样窗体无论在那种屏幕下他都是最大化全屏的本回答被提问者采纳 参考技术B 初始最大化 参考技术C 用关键字自己设定 参考技术D 不懂得

Windows Forms C# 应用程序 - 当用户为操作系统字体大小选择 125% 或 150% 时,设置表单控件的字体大小以适应屏幕?

【中文标题】Windows Forms C# 应用程序 - 当用户为操作系统字体大小选择 125% 或 150% 时,设置表单控件的字体大小以适应屏幕?【英文标题】:Windows Forms C# application - Set font size of form controls to fit the screen when a user choose 125% or 150% for the OS font size? 【发布时间】:2021-03-13 03:51:56 【问题描述】:

我们设计了一个适用于所有分辨率的 Windows 窗体应用程序。我们遇到了这样一种情况,当用户选择 125% 或 150% 的字体大小时,表单中所有控件的字体大小都会增加。我已将屏幕分辨率设置为 1440x900,并将设置更改为 125%,如下面的屏幕截图所示

在机器上进行这些设置并运行应用程序后,我们发现表单中所有控件的字体大小都增加了,并且与其他控件重叠。

您能否建议任何代码/过程来检测操作系统字体大小的增加,即超过 100% 并处理控件的字体大小?

【问题讨论】:

看看这个帖子:***.com/questions/5901299/… 这应该可以解决你的问题。 @Felixus 我的 Windows 应用程序中的所有表单都使用 AutoScaleMode.Font。我应该将其更改为 AutoScaleMode.Dpi 吗? 【参考方案1】:

我会先尝试使用

System.Drawing.SystemFonts.DefaultFont

适用于所有表单元素。当使用不同的显示器、比例和分辨率时,AutoScale.Dpi 可能会导致您的 UI 发生一些奇怪的变化。

【讨论】:

System.Drawing.SystemFonts.DefaultFont 设置已正确应用于标签控件,但表单中也存在未应用该设置的 WPF 控件。你能建议需要做什么吗? 尝试将显示正确字体大小的标签的字体系列应用于 wpf 元素。这应该有效。由于我不与 wpf 合作,因此无法给您任何进一步的建议。 您能否建议如何在代码运行时检测到文本大小增加到 125%? 如果系统字体属性在事件之后引发,您可以使用事件处理程序。如果没有,请获取第二个线程或 BackgroundWorker 来检查 systemfonts.default 值。如果它发生变化,您可以引发自定义事件(但这种方法非常糟糕,因为它使用了相对大量的 ram)。 当我将 DPI 缩放比例从 100% 增加到 125% 或 150% 时,标签的字体大小没有增加。标签的字体大小在所有 DPI 缩放中都相同。尽管如此,某些表单的大小不正确,以至于一个控件与另一个控件重叠

以上是关于怎样在c#中做个窗体并能够自适应屏幕的大小的主要内容,如果未能解决你的问题,请参考以下文章

panel怎么设置自适应窗体大小

CSS背景图片自适应屏幕大小

C# winform Label控件 已经自适应实现多行显示了 我现在要取出每行的文本 该怎么做? 求助! 多谢!

怎样使子div自适应父div的大小

如何让这个div随屏幕的大小而自适应

怎样用css控制图片自适应大小?