以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] 窗口缩放后,如何让原表列宽同比缩放。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123653) |
|
-- 作者:dxjwlf -- 发布时间:2018/8/20 15:01:00 -- [求助] 窗口缩放后,如何让原表列宽同比缩放。 在网上找了一个类似的 但看不懂。
|
|
-- 作者:有点蓝 -- 发布时间:2018/8/20 15:02:00 -- 行号的宽度 |
|
-- 作者:dxjwlf -- 发布时间:2018/8/20 15:33:00 -- 测试了,不起作用。。我禁用了行号,设置了 显示列。 我的意思是:窗口最大化时,该表格的列宽和表格一样宽,不会留下一处空白区 |
|
-- 作者:有点蓝 -- 发布时间:2018/8/20 15:59:00 -- SizeChanged事件 Dim lst As new List(of String) Dim ct As WinForm.Table = e.Form.Controls("Table1") Dim t As Table = ct.Table For Each c As Col In t.Cols If c.Visible Then lst.Add(c.Name) Next Dim w As Integer = (ct.Width-30) / lst.Count t.SetColVisibleWidth(String.Join("|" & w & "|",lst.ToArray) & "|" & w) |
|
-- 作者:dxjwlf -- 发布时间:2018/8/20 16:21:00 -- 谢谢了。这个表格控件真是无语。什么都要自己写代码。为什么不集成一下。 lst.count count 只是返列宽个数。 这么除什么意思呀 t.SetColVisibleWidth(String.Join("|" & w & "|",lst.ToArray) & "|" & w) 这个好复杂呀。看不懂。知识点在哪里找得到 |
|
-- 作者:有点蓝 -- 发布时间:2018/8/20 16:27:00 -- http://www.foxtable.com/webhelp/scr/1423.htm |
|
-- 作者:dxjwlf -- 发布时间:2018/8/20 16:59:00 -- Dim w As Integer = (ct.Width-30) / lst.Count 这句话是平均分布各列。 而我想要的是 显示列的宽度,同比例缩放。 |
|
-- 作者:有点蓝 -- 发布时间:2018/8/20 17:27:00 -- Dim ct As WinForm.Table = e.Form.Controls("Table1") Dim t As Table = ct.Table Dim sum As Double = 0 Dim cnt As Integer =0 For Each c As Col In t.Cols If c.Visible Then sum += c.Width cnt+=1 End If Next If ct.Width > sum Then Dim w As Integer = (ct.Width - sum -30)/cnt For Each c As Col In t.Cols If c.Visible Then c.Width = c.Width + w End If Next Else Dim w As Integer = (sum - ct.Width + 30)/cnt For Each c As Col In t.Cols If c.Visible Then c.Width = c.Width - w End If Next End If
|
|
-- 作者:dxjwlf -- 发布时间:2018/8/20 21:52:00 -- 这个有bug, 那就是列宽在不断变大,比如。60放大后就成了93,缩小在放大 就成了147了。 |
|
-- 作者:有点蓝 -- 发布时间:2018/8/20 22:05:00 -- 请上传实例测试 |