以文本方式查看主题

-  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=123902)

--  作者:ZJZK2018
--  发布时间:2018/8/26 15:03:00
--  分区界面与窗口高度
老师:
有二个分区界面SplitContainer1和SplitContainer2,点击按钮,关闭分区界面1的Panel2,并要求窗口高度与Panel1相同。


图片点击可在新窗口打开查看此主题相关图片如下:9999145735.png
图片点击可在新窗口打开查看


代码如下:

Dim sp As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")
If e.Sender.text = "∨∨∨∨" Then
    sp.Panel2.Collapsed = True
    e.sender.text = "∧∧∧∧"
Else
    sp.Panel2.Collapsed = False
    e.sender.text = "∨∨∨∨"
End If

--  作者:有点甜
--  发布时间:2018/8/26 23:16:00
--  
做个具体的例子发上来测试吧。
--  作者:ZJZK2018
--  发布时间:2018/8/26 23:20:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分区界面18.table


--  作者:有点甜
--  发布时间:2018/8/27 0:12:00
--  
Dim sp As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")
If e.Sender.text = "∨∨∨∨" Then
    e.Form.baseform.height = 385
    sp.Panel2.Collapsed = True
    e.sender.text = "∧∧∧∧"
Else
    e.Form.baseform.height = 486
    sp.Panel2.Collapsed = False
    e.sender.text = "∨∨∨∨"
End If

--  作者:客人
--  发布时间:2018/9/12 13:51:00
--  
老师
需求:如何提取SplitContainer1的变化前的高度??

Dim sp As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")
If e.Sender.text = "∨∨∨∨" Then
    e.Form.baseform.height = sp.Panel1.height
    sp.Panel2.Collapsed = True
    e.sender.text = "∧∧∧∧"
Else
    e.Form.baseform.height = sp.height  \'能否调用变化前的高度???
    sp.Panel2.Collapsed = False
    e.sender.text = "∨∨∨∨"
End If



--  作者:有点甜
--  发布时间:2018/9/12 15:02:00
--  
单独用一个 static 变量或者 vars 变量记录之前的值。
--  作者:ZJZK2018
--  发布时间:2018/9/12 15:57:00
--  
有点甜老师如何使用变量,我不会,能否指点?
--  作者:有点甜
--  发布时间:2018/9/12 15:59:00
--  

在改变之前,先记录其值,如

 

vars("旧值") = sp.height

\'然后后面代码改变控件高度


--  作者:ZJZK2018
--  发布时间:2019/4/30 11:44:00
--  

窗口为主窗口,sp1.Panel2为固定分区,如何读取窗口生成后的sp1.Panel1的高度,为什么sp1.Panel1.Height的高度是原窗口设计时的高度?

老师有没有办法根据不同电脑显示屏的窗口尺寸动态计算出窗口Table1加载行数?

 

 

Dim sp1 As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")

\'Dim n As Integer = Math.Floor((tb1.Grid.Height-20)/32)  \'根据窗口tb1计算出加载行数
Dim n As Integer = Math.Floor((sp1.Panel1.Height-30)/32)  \'根据窗口tb1计算出加载行数

 

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20190430103055.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2019/4/30 12:36:00
--  

你试试把代码写到sizechanged事件去

 

Dim sp1 As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")

msgbox(sp1.Panel1.Height)