Foxtable(狐表)用户栏目专家坐堂 → 关于在窗口或容器中动态添加控件的问题!!


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

主题:关于在窗口或容器中动态添加控件的问题!!

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


加好友 发短信
等级:一尾狐 帖子:455 积分:3756 威望:0 精华:0 注册:2012/2/8 14:19:00
  发帖心情 Post By:2015/7/7 19:44:00 [只看该作者]

最后自己写了这样的代码:效率可能不高,但个人感觉到比较完美!!能始终动态控件各添加控件的大小!尤其是动态添加控件时,控件间有一定像素的间隔!!

Dim box As WinForm.GroupBox = e.Form.Controls("GroupBox1")
Dim w As Integer = box.Width    '定义宽度
Dim h As Integer = box.Height   '定义高度
Dim kd,gd As Double    '定义添加控件的高度与宽度
Dim l As Double = 14  '定义控件离左边的距离
Dim t As Double = 20  '定义控件离顶边的距离

Dim djs() As String = DataTables("等级").GetComboListString("等级","等级>''","_Identify").Split("|")
Dim m As Integer = djs.Length Mod 3    '取余数,每行只放置3个控件
Dim n As Double = djs.Length/3         '取放置控件的行数,<1则为一行;>1则为2行

If n<=1 Then   '如果测评等有小于等于3个
    For i As Integer = 0 To djs.Length -1
        Dim btn As WinForm.Button
        btn = e.Form.CreateControl(djs(i),ControlTypeEnum.Button)
        btn.Text = djs(i)
        btn.Left = L
        btn.Top = t
        If djs.Length =1 Then
            btn.Width = (w-(i+2)*10)/djs.Length -9
        ElseIf djs.Length = 2 Then
            btn.Width = (w-(i+2)*10)/djs.Length -4
        Else
            btn.Width = (w-(i+2)*10)/djs.Length
        End If
        
        btn.Height = h -30
        box.AddControl(btn)
        l = l + (w-(i+2)*10)/djs.Length
    Next
Else   '如果大于3个
    '先指定批一排按钮
    For i As Integer = 0 To 2
        Dim btn As WinForm.Button
        btn = e.Form.CreateControl(djs(i),ControlTypeEnum.Button)
        btn.Text = djs(i)
        btn.Left = l
        btn.Top = t
        btn.Width = (w-(i+2)*10)/3
        btn.Height = (h -30)/2
        box.AddControl(btn)
        l = l + (w-(i+2)*10)/3
    Next
    '再动态加载第二排
    L  = 14
    For i As Integer = 3 To DJS.Length-1
        Dim btn As WinForm.Button
        btn = e.Form.CreateControl(djs(i),ControlTypeEnum.Button)
        btn.Text = djs(i)
        btn.Left = l
        btn.Top = t + (h-30)/2
        If djs.Length =4 Then
            btn.Width =( w - (i-1) * 10)/(djs.Length -3) -9
        ElseIf djs.Length = 5 Then
            btn.Width =( w - (i-1) * 10)/(djs.Length -3) -4
        Else
            btn.Width =( w - (i-1) * 10)/(djs.Length -3)
        End If
        btn.Height = (h -30)/2
        box.AddControl(btn)
        l = l+( w - (i-1) * 10)/(djs.Length -3)
    Next
End If

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/7 19:50:00 [只看该作者]

 能用就好。

 回到顶部
总数 12 上一页 1 2