如何自动resize和调整分辨率更改的表单控件

我已经注意到一些应用程序改变了他们的控制位置,尽可能的调整他们的分辨率,如果窗口最大化,他们自己设置自己的方式,使所有的GUI看起来平衡。 我的问题是,是否有可能在Visual Studio 2010 C#中制作或实现此function?

使用Dock和Anchor属性。 这是一篇很好的文章。 请注意,这些将在最大化/最小化时处理更改。 这是有点不同,如果屏幕分辨率变化,但它会沿着相同的想法。

使用这些组合来获得所需的结果:

  1. 将“ Anchor属性设置为“无”,控件不会resize,只会改变其位置。

  2. Anchor属性设置为Top + Bottom + Left + Right,控件将被resize,但不会改变它们的位置。

  3. 将窗体的Minimum Size设置为适当的值。

  4. 设置Dock属性。

  5. 使用Form Resize事件来改变任何你想要的

我不知道(1) – (4)中的字体大小(标签,文本框,combobox等)会受到影响,但是可以在(5)中进行控制。

 float widthRatio = Screen.PrimaryScreen.Bounds.Width / 1280; float heightRatio = Screen.PrimaryScreen.Bounds.Height / 800f; SizeF scale = new SizeF(widthRatio, heightRatio); this.Scale(scale); foreach (Control control in this.Controls) { control.Font = new Font("Verdana", control.Font.SizeInPoints * heightRatio * widthRatio); } 

..并检测分辨率的变化来处理它(一旦你使用像SwDevMan81build议的停靠和锚定)使用Microsoft.Win32中的SystemEvents.DisplaySettingsChanged事件 。

在表单加载事件中添加这一行

 this.WindowState = FormWindowState.Maximized; 

为了更好地调整代码的forms,预先调整好其他的代码

http://niravdaraniya.blogspot.in/2013/07/how-to-resize-form-in-cnet.html

在页面加载时添加这个代码做所有的控制或者在容器中添加所有的控制

 int x; Point pt = new Point(); x = Screen.PrimaryScreen.WorkingArea.Width - 1024; x = x / 2; pt.Y = groupBox1.Location.Y + 50; pt.X = groupBox1.Location.X + x; groupBox1.Location = pt; 
 private void MainForm_Load( object sender, EventArgs e ) { this.Size = Screen.PrimaryScreen.WorkingArea.Size } 
 this.WindowState = FormWindowState.Maximized;