none
如何让窗口正确显示所有控件? RRS feed

  • 问题

  • 大家好。我想在不同的屏幕分辨率下均正常显示窗体上的所有控件,不会出现一大片空白或有些控件又看不见了。

    2012年6月16日 14:07

答案

  • 具体方法取决于你使用的类库。比如如果你用WPF,那么WPF会自动帮你设定控件的大小,但是你仍旧需要根据屏幕大小决定布局(例如一行工具栏显示多少个按钮)。Windows Forms是基于像素的,所以你如果要你的Windows Forms窗口基于物理大小显示的话,需要计算根据DPI窗口大小。TableLayoutPanel、AutoSize、Anchor、Dock、AutoScaleMode可以帮你的忙,但是这很耗CPU,而且还是不能解决窗口逻辑大小改变造成的布局需求,在屏幕较小的计算机上,可以考虑将表单Tab化。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年6月17日 14:20
    版主

全部回复

  • 设置窗口大小和字体之前先检测DPI,然后根据不同DPI设置不同的布局


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年6月16日 16:05
    版主
  • 你好,请问有例子吗?

    2012年6月17日 6:35
  • 具体方法取决于你使用的类库。比如如果你用WPF,那么WPF会自动帮你设定控件的大小,但是你仍旧需要根据屏幕大小决定布局(例如一行工具栏显示多少个按钮)。Windows Forms是基于像素的,所以你如果要你的Windows Forms窗口基于物理大小显示的话,需要计算根据DPI窗口大小。TableLayoutPanel、AutoSize、Anchor、Dock、AutoScaleMode可以帮你的忙,但是这很耗CPU,而且还是不能解决窗口逻辑大小改变造成的布局需求,在屏幕较小的计算机上,可以考虑将表单Tab化。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年6月17日 14:20
    版主