Foxtable(狐表)用户栏目专家坐堂 → [求助]狐爸,请帮解决下分区面板问题


  共有6689人关注过本帖树形打印复制链接

主题:[求助]狐爸,请帮解决下分区面板问题

帅哥哟,离线,有人找我吗?
傻马难骑
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
[求助]狐爸,请帮解决下分区面板问题  发帖心情 Post By:2013/6/6 13:56:00 [显示全部帖子]

狐爸好,项目设计中需要用到分区面板,希望分区面板上下二部分的高度随着窗口尺寸的不同能自动调整,请问如何实现?

 

我做了个例子见附件,希望窗口打开后SplitContainer2控件的上、下二部分(红色和蓝色)能根据窗口尺寸自动调整为相同高度,请帮忙设计下代码,谢谢!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分区面板测试.table


 回到顶部
帅哥哟,离线,有人找我吗?
傻马难骑
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
  发帖心情 Post By:2013/6/6 14:21:00 [显示全部帖子]

 

这个上下两部分高度明显不一致呀,我要的是上下两部分高度相等。


 回到顶部
帅哥哟,离线,有人找我吗?
傻马难骑
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
  发帖心情 Post By:2013/6/6 14:35:00 [显示全部帖子]

1、设计时只有个总高度数据,看不到上、下部分分别是多少高度,如何精确确定上下比例;

2、按你方法打开后明显下半部分比上半部分高。


 回到顶部
帅哥哟,离线,有人找我吗?
傻马难骑
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
  发帖心情 Post By:2013/6/6 16:37:00 [显示全部帖子]

以下是引用狐狸爸爸在2013-6-6 15:12:00的发言:

上面小,是因为有个文本框吧,占了一点地方吧?

只能设计窗口的时候,调整好比例。

 

   是的呀,我就是要求除开文本框后(实际设计也有可能布置更多的其他控件)剩下的部分根据实际分辨率等情况自动分成相等高度的二部分。

   狐爸,这种问题在VB中是很好解决的呀,难道在FoxTable中做不到吗?


 回到顶部
帅哥哟,离线,有人找我吗?
傻马难骑
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
  发帖心情 Post By:2013/6/6 21:13:00 [显示全部帖子]

以下是引用狐狸爸爸在2013-6-6 17:07:00的发言:

AfterLoad事件:

 

e.Form.Controls("TextBox1").text="测试分区面板"
Dim sp As WinForm.SplitContainer = e.Form.Controls("SplitContainer2")
sp.FixedPanel =0
sp.SplitterDistance = (sp.Height- sp.SplitterWidth - 21 ) / 2 + 21

[此贴子已经被作者于2013-6-6 17:11:09编辑过]

 

   这个效果在正常情况下确实要好得多。但还是存在问题:设为独立窗口,手动调整窗口高度就能明显看到,把窗口拉高,上半部会比下半部高;把窗口高度减小,上半部又会比下半部短小究竟是怎么回事呢?


 回到顶部
帅哥哟,离线,有人找我吗?
傻马难骑
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
  发帖心情 Post By:2013/6/6 21:30:00 [显示全部帖子]

以下是引用擎天柱在2013-6-6 19:07:00的发言:
我觉得代码至少要放到两个事件里。独立窗口的 AfterLoad 事件里代码应该是这样:
e.Form.Controls("TextBox1").text="测试分区面板"
Dim sp As WinForm.SplitContainer = e.Form.Controls("SplitContainer2")
sp.SplitterDistance = (sp.Height- sp.SplitterWidth) / 2
以上仅能保证窗口打开时,红绿区自动分配均等,但拉大或缩小窗口,则比例自动失调(主要是上面有个文本框)
因此需要在窗口调整时执行以上代码,这放在哪里呢?mouseup?不行
我觉得狐爸那个代码中的21也是值得商榷的。

 

  我也觉得狐爸的这个21存在问题,在拉大或缩小窗口时比例会失调。不知怎么才能解决这个问题?!


 回到顶部
帅哥哟,离线,有人找我吗?
傻马难骑
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
  发帖心情 Post By:2013/6/7 13:25:00 [显示全部帖子]

狐爸呀,这个针对你的显示屏幕是没有问题的。如果你改为独立窗口,再把窗口逐步拉小,你自己看看有什么变化吧。


 回到顶部
帅哥哟,离线,有人找我吗?
傻马难骑
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
  发帖心情 Post By:2013/6/7 14:43:00 [显示全部帖子]

好象是行的,可以设置不同大小的窗口,与手动拖放不同,呵呵。

 

我基本上理解了,那个21是文本框的高度图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
傻马难骑
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
  发帖心情 Post By:2013/6/7 17:00:00 [显示全部帖子]

我测试了的,只是用的方法不同而已

 回到顶部