以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 窗口大小自适应时在不同界面切换的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89686) |
||||
-- 作者:天若千颖 -- 发布时间:2016/8/26 21:51:00 -- 窗口大小自适应时在不同界面切换的问题 看过很人包括红袍老师,有点甜等都提到过的解决方案 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=78838&skin=0 用的最多的是:
大红袍老师还提到过控制窗口中的Button大小,只放大缩小其他控件的办法。 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=83979
这样的方法只对独立窗口起作用,因为每个独立窗口都是单独打开,打开的时候是原始大小,一旦点击最大化按钮,可以触发窗口的SizeChanged时间,从而实现放缩。但是,很多项目其实基本都是一个主界面,所有的界面都在一个主界面中显示,当窗口第一次最大化时,触发第一个窗口的SizeChanged事件,第一个窗口可以最大化,但是当切换到第二个窗口的时候,窗口大小并没有变,没有办法触发SizeChanged事件,窗口中的控件就没法放缩了。
如上项目,打开项目,在窗口1和窗口2大小相同,
当放大窗口1之后,再切换到窗口2,窗口2并没有变化。另外,当窗口最小化的时候,也出出现算术溢出的问题。
这种所有窗口都只在一个界面之中,如何实现窗口切换的过程中,也能实现控件的自动适应屏幕呢? 因为我的项目中,有一张地图,需要在地图上标注名字,如果采用停靠或者锚定的方法,Lable没法固定在正确的地方,比如,标注一个“新疆”,采用锚定的办法,当窗口放大之后,图片虽然也能放大,但是,Lable文字没法锚定,放大之后Lable标注的地方,一般都不是新疆了。
这样的情况有没有比较好的解决方案,请大红袍老师或者其他遇到过的人指导。 [此贴子已经被作者于2016/8/26 21:56:43编辑过]
|
||||
-- 作者:黄训良 -- 发布时间:2016/8/27 0:58:00 -- 整个窗口放一个面板,四边锚定,按你的要求放入无数个面板或者分区面板,按需锚定不同的边,放入你的控件即可自动适应电脑显示器或窗口大小! 我的还实现控件自动随窗口大小而改变大小,一排显示不完自动显示到下一排。 [此贴子已经被作者于2016/8/27 1:02:29编辑过]
|
||||
-- 作者:天若千颖 -- 发布时间:2016/8/27 7:41:00 -- 你说的还是通过锚定的方式控制窗口大小,那PANLE中的PICTURE上标注的LABLE呢?如何在窗口大小改变了的情况下,还是标注在和原来图片的固定位置上?比如中国地图图片,窗口原始大小上标注了“北京”,一旦窗口放大,如何让“北京”这个LABLE还在地图正确的位置上? |
||||
-- 作者:Hyphen -- 发布时间:2016/8/27 9:20:00 -- 1、同时打开多个窗口的时候,全局变量多个窗口都用到,会有冲突,第二个窗口vars("width")和vars("height")改为vars("width2")和vars("height2")就可以了 |
||||
-- 作者:天若千颖 -- 发布时间:2016/8/27 10:43:00 -- Hypen老师,你回复的3楼的问题参考的帖子我以前看过,但是并不能解决我提到的问题。这种窗口自适应的解决方案只针对一个窗口有用,或者说对独立窗口有用,因为独立窗口每个窗口都是独立的,都可以有SizeChanged事件。
只修改SizeChanged的话,也提示错误。
[此贴子已经被作者于2016/8/27 10:44:55编辑过]
|
||||
-- 作者:Hyphen -- 发布时间:2016/8/27 10:51:00 -- 以后遇到图片提示的这种错误,把项目下bin目录删除,重启项目即可 |
||||
-- 作者:Hyphen -- 发布时间:2016/8/27 10:52:00 -- 至于3楼的问题,请上具体例子说明 |
||||
-- 作者:天若千颖 -- 发布时间:2016/8/27 11:01:00 -- 例子就在1楼,控件随窗口自动放缩的解决办法之前很多帖子都提到了,都是针对一个窗口,或者独立窗口,如果我所有的窗口都是主窗口呢,只有第一个窗口改变大小之后可以触发sizechanged,在放大的情况下切换到另外的窗口,没法触发sizechanged啊。 |
||||
-- 作者:天若千颖 -- 发布时间:2016/8/27 11:07:00 -- 能否这样解决,给每一个窗口定义一个默认大小,如果识别到窗口的实际大小不等于默认大小,则执行与SIZECHANGED相同的代码?这个,应该在窗口的AFTERLOAD事件中吧? |
||||
-- 作者:Hyphen -- 发布时间:2016/8/27 11:15:00 -- 测试没有问题,看4楼 |