以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 自适应窗口出现算术溢出,怎么解决  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89385)

--  作者:wangyinming
--  发布时间:2016/8/20 15:23:00
--  [求助] 自适应窗口出现算术溢出,怎么解决
各位设置了自适应窗口,再最小化到最大化出现算术溢出,怎么解决?
图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:图纸.rar



--  作者:Hyphen
--  发布时间:2016/8/20 15:42:00
--  
If e.Form.Width > 0 AndAlso e.Form.Height  > 0 Then
    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
End If

--  作者:wangyinming
--  发布时间:2016/8/20 16:04:00
--  
谢谢,请问调整窗口时可以不闪吗
--  作者:Hyphen
--  发布时间:2016/8/20 16:16:00
--  
没有办法。而且不建议做这种调整,多了就会失真。
--  作者:wangyinming
--  发布时间:2016/8/20 16:17:00
--  
谢谢,
--  作者:Hyphen
--  发布时间:2016/8/20 16:18:00
--  
这样效果好点

If e.Form.Width > 0 AndAlso e.Form.Height  > 0 Then
e.Form.StopRedraw
    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
e.Form.ResumeRedraw
End If

--  作者:xxfoxtable
--  发布时间:2018/4/28 22:24:00
--  
我是这样加的代码,还是提示算术溢出,怎么办呢?
--  作者:有点蓝
--  发布时间:2018/4/29 9:04:00
--  
上传实例测试。

另外不建议做这种自适应。应该通过容器、停靠、锚定、滚动等等设置