Foxtable(狐表)用户栏目专家坐堂 → [求助] 窗口缩放后,如何让原表列宽同比缩放。


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

主题:[求助] 窗口缩放后,如何让原表列宽同比缩放。

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


加好友 发短信
等级:童狐 帖子:261 积分:2195 威望:0 精华:0 注册:2015/5/15 14:51:00
[求助] 窗口缩放后,如何让原表列宽同比缩放。  发帖心情 Post By:2018/8/20 15:01:00 [只看该作者]

在网上找了一个类似的   但看不懂。

Dim t As Table = Tables("表a")
Dim cs1 As String = "第一列,第二列,第三列"
Dim cs2 As String = "20,50,30"
Dim w As Integer = (t.grid.width-30) / 100                问题: 这里表列宽为什么 要减个30呀
Dim str As String = ""
Dim ary1 = cs1.split(",")
Dim ary2 = cs2.split(",")
For i As Integer = 0 To ary1.length-1
    t.cols(ary1(i)).width = w * ary2(i)
Next

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/20 15:02:00 [只看该作者]

行号的宽度

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


加好友 发短信
等级:童狐 帖子:261 积分:2195 威望:0 精华:0 注册:2015/5/15 14:51:00
  发帖心情 Post By:2018/8/20 15:33:00 [只看该作者]

测试了,不起作用。。我禁用了行号,设置了   显示列。 我的意思是:窗口最大化时,该表格的列宽和表格一样宽,不会留下一处空白区


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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:261 积分:2195 威望:0 精华:0 注册:2015/5/15 14:51:00
  发帖心情 Post By:2018/8/20 16:21:00 [只看该作者]

谢谢了。这个表格控件真是无语。什么都要自己写代码。为什么不集成一下。

lst.count  count 只是返列宽个数。 这么除什么意思呀


t.SetColVisibleWidth(String.Join("|" & w & "|",lst.ToArray) & "|" & w)   这个好复杂呀。看不懂。知识点在哪里找得到


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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/20 16:27:00 [只看该作者]


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


加好友 发短信
等级:童狐 帖子:261 积分:2195 威望:0 精华:0 注册:2015/5/15 14:51:00
  发帖心情 Post By:2018/8/20 16:59:00 [只看该作者]

Dim w As Integer = (ct.Width-30) / lst.Count  这句话是平均分布各列。  而我想要的是  显示列的宽度,同比例缩放。

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:261 积分:2195 威望:0 精华:0 注册:2015/5/15 14:51:00
  发帖心情 Post By:2018/8/20 21:52:00 [只看该作者]

这个有bug, 那就是列宽在不断变大,比如。60放大后就成了93,缩小在放大 就成了147了。


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/20 22:05:00 [只看该作者]

请上传实例测试

 回到顶部
总数 18 1 2 下一页