以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 调整主窗口、独立窗口控件的边距 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=105510) |
||||
-- 作者:blsu33 -- 发布时间:2017/8/21 12:57:00 -- 调整主窗口、独立窗口控件的边距 老师, 调整页面窗口中的SplitContainer的分区边距始终不对,劳烦您指导如何用代码调整; 如果是主窗口怎么做,其他窗口如何调整?例子如下,问题标注到了,窗口1的AfterLoad代码 |
||||
-- 作者:有点甜 -- 发布时间:2017/8/21 15:14:00 --
|
||||
-- 作者:blsu33 -- 发布时间:2017/8/21 16:28:00 -- 老师, \'If e.Form.panel.Visible = True Then 这个去掉可以吗,这句是什么意思呢 我这边放放到自定义函数中,黄色的部分 和例子一样 Dim tab As WinForm.TabControl = args(0) Dim dr As DataRow = args(1) Dim e As object=args(2) e.Form.StopRedraw Dim dt As DataTable = dr.DataTable Dim drs As List(of DataRow) = dt.Select("编码规则 like \'" & dr("编码规则") & "%\' and 编码级次 = \'" & dr("编码级次")+1 & "\'") If drs.count > 0 Then Dim ctab As WinForm.TabControl ctab = tab.Form.CreateControl("tab_" & dr("编码规则"), ControlTypeEnum.tabcontrol) ctab.Dock = 5 \'ctab.ShowTabs=False Dim panel As WinForm.panel panel = tab.Form.CreateControl("pal_" & dr("编码规则"), ControlTypeEnum.panel) panel.Dock = 5 panel.AddControl(ctab) For Each cdr As DataRow In drs ctab.TabPages.Add(cdr("编码规则"), cdr("编码名称")).Dock = 5 Functions.Execute("loop2", ctab, cdr,e) ctab.TabPages(cdr("编码规则")).Dock = 5 Next tab.TabPages(dr("编码规则")).AddControl(panel) Else \'If e.Form.panel.Visible = True Then e.Form.TimerEnabled = False [此贴子已经被作者于2017/8/21 16:31:08编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/8/21 16:31:00 -- 以下是引用blsu33在2017/8/21 16:28:00的发言:
老师, \'If e.Form.panel.Visible = True Then 这个去掉可以吗,这句是什么意思呢
可以去掉。目的是为了判断窗口是否已经显示出来。 |
||||
-- 作者:blsu33 -- 发布时间:2017/8/21 16:33:00 -- 3楼代码执行后,位置还是不对呢 |
||||
-- 作者:有点甜 -- 发布时间:2017/8/21 16:51:00 -- 以下是引用blsu33在2017/8/21 16:33:00的发言:
3楼代码执行后,位置还是不对呢
位置对不对你自己写代码控制。窗口显示后,width、height等信息,是肯定正确的。 |
||||
-- 作者:blsu33 -- 发布时间:2017/8/21 17:01:00 -- 老师, 您给的的确可以实现,宽高都能能调整正确,但是,放到我这边的系统中,就不行了,这可怎么办呢
|
||||
-- 作者:blsu33 -- 发布时间:2017/8/21 17:02:00 -- 这个我弄了好多天了,位置怎么也调整不对啊,能给远程下吗? |
||||
-- 作者:有点甜 -- 发布时间:2017/8/21 17:08:00 -- 以下是引用blsu33在2017/8/21 17:02:00的发言:
这个我弄了好多天了,位置怎么也调整不对啊,能给远程下吗?
1、你直接指定数值测试行不行?相乘的比例不是你需要的?
2、靠右、靠下,你直接用父容器的宽度或者高度相减得到。
|
||||
-- 作者:blsu33 -- 发布时间:2017/8/21 17:19:00 -- 老师, MessageBox.Show(S1.Width) 宽度是198 在窗口中宽度就变为1770 而 S1.SplitterDistance 应该是按照1770的宽度计算,却使用198计算 假如直接用固定值,S1.SplitterDistance=400,就直接报错,因为宽度最大为198, 这是何故。 |