我有一个C#WinForms应用程序,当我将可执行文件提供给不同的用户时,应用程序会以不同的大小显示(根据他们的屏幕分辨率)。无法看到应用程序的某些部分。
无论如何根据屏幕分辨率自动调整窗口大小,还是有另一种方法?
编辑:此外,它在不同的操作系统下以不同的样式出现,是否可以将其设计标准化?
答案 0 :(得分:5)
听起来您已经使用绝对定位和其他布局默认值指定了控件。为了使WinForms应用程序在各种大小调整方案中看起来和感觉相同并且行为正确,您需要使用Anchor和Dock属性。在WinForms中安排控件可能会很累人,但MSDN包含一些不错的How To's on the subject。
我还建议您继续使用此TechRepublic article, which covers the difference between Anchoring and Docking,并直观地向您展示每个属性的完成情况:
答案 1 :(得分:4)
您可以使用Control.ScaleControl和Control.Scale
private void MainForm_Load( object sender, EventArgs e )
{
float width_ratio = (Screen.PrimaryScreen.Bounds.Width / 1280);
float heigh_ratio = (Screen.PrimaryScreen.Bounds.Height / 800f);
SizeF scale = new SizeF(width_ratio, heigh_ratio);
this.Scale(scale);
//And for font size
foreach (Control control in this.Controls)
{
control.Font = new Font("Microsoft Sans Serif", c.Font.SizeInPoints * heigh_ratio * width_ratio);
}
}
在开发平台分辨率为1280x800
的情况下根据@sixlettervariables的回答停靠和锚定当然会有所帮助。
答案 2 :(得分:0)
试试这个
private void MainForm_Load( object sender, EventArgs e )
{
this.Size = Screen.PrimaryScreen.WorkingArea.Size
}