看过很人包括红袍老师,有点甜等都提到过的解决方案
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=78838&skin=0
用的最多的是:
Afterload事件
vars("width") = e.Form.width
vars("height") = e.Form.height
SizeChanged事件
For Each c As Winform.Control In e.Form.Controls
c.Left = c.Left * (e.Form.Width / vars("width"))
c.Top = c.Top * (e.Form.Height / vars("height"))
c.Width = c.Width * (e.Form.Width / vars("width"))
c.Height = c.Height * (e.Form.Height / vars("height"))
Next
msgbox(e.Form.Height / vars("height"))
vars("width") = e.Form.width
vars("height") = e.Form.height
大红袍老师还提到过控制窗口中的Button大小,只放大缩小其他控件的办法。
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=83979
这样的方法只对独立窗口起作用,因为每个独立窗口都是单独打开,打开的时候是原始大小,一旦点击最大化按钮,可以触发窗口的SizeChanged时间,从而实现放缩。但是,很多项目其实基本都是一个主界面,所有的界面都在一个主界面中显示,当窗口第一次最大化时,触发第一个窗口的SizeChanged事件,第一个窗口可以最大化,但是当切换到第二个窗口的时候,窗口大小并没有变,没有办法触发SizeChanged事件,窗口中的控件就没法放缩了。
如上项目,打开项目,在窗口1和窗口2大小相同,
此主题相关图片如下:窗口1.jpg
![dvubb 图片点击可在新窗口打开查看](UploadFile/2016-8/201682621503921104.jpg)
此主题相关图片如下:窗口2.jpg
![dvubb 图片点击可在新窗口打开查看](UploadFile/2016-8/201682621504921660.jpg)
当放大窗口1之后,再切换到窗口2,窗口2并没有变化。另外,当窗口最小化的时候,也出出现算术溢出的问题。
此主题相关图片如下:窗口1放大.jpg
![dvubb 图片点击可在新窗口打开查看](UploadFile/2016-8/201682621513723449.jpg)
此主题相关图片如下:窗口2并没有放大.jpg
![dvubb 图片点击可在新窗口打开查看](UploadFile/2016-8/201682621514618133.jpg)
这种所有窗口都只在一个界面之中,如何实现窗口切换的过程中,也能实现控件的自动适应屏幕呢?
因为我的项目中,有一张地图,需要在地图上标注名字,如果采用停靠或者锚定的方法,Lable没法固定在正确的地方,比如,标注一个“新疆”,采用锚定的办法,当窗口放大之后,图片虽然也能放大,但是,Lable文字没法锚定,放大之后Lable标注的地方,一般都不是新疆了。
这样的情况有没有比较好的解决方案,请大红袍老师或者其他遇到过的人指导。
[此贴子已经被作者于2016/8/26 21:56:43编辑过]