Foxtable(狐表)用户栏目专家坐堂 → [求助]求助排列规律的代码


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

主题:[求助]求助排列规律的代码

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


加好友 发短信
等级:小狐 帖子:321 积分:2468 威望:0 精华:2 注册:2013/1/16 19:33:00
  发帖心情 Post By:2013/5/26 0:08:00 [显示全部帖子]

Dim w,h,j,w0,w1,h0,h1 As Integer
w = 80 '控件宽
h = 50 '控件高
w0=10 '左右外边距
w1=5 '左右内边距
h0=10 '上外边距
h1=7 '上下内边距
j= e.Form.Width-w0+w1
j=j\(w+w1)
Dim drs As List(Of DataRow)
drs = DataTables("表a").Select("[状态] = '在线'")
For i As Integer = 1 To drs.Count
    If e.Form.ExistControl("online_Panel" & i) = True
        e.Form.RemoveControl("online_Panel" & i)
    End If
    Dim pl As WinForm.Panel
    pl = e.Form.CreateControl("online_Panel" & i, ControlTypeEnum.Panel)
    pl.Width = w
    pl.Height = h
    pl.Left = w0+((i-1) Mod j)*(w+w1)
    pl.Top =  h0+((i-1)\j)*(h+h1)

    e.Form.Controls("Panel1").AddControl(pl)
    If e.Form.ExistControl("online_Panel" & i & "_" & drs(i-1)("用户")) = True
        e.Form.RemoveControl("online_Panel" & i & "_" & drs(i-1)("用户"))
    End If
    Dim pt As WinForm.Painter
    pt = e.Form.CreateControl("online_Panel_" & i & "_" & drs(i-1)("用户"), ControlTypeEnum.Painter)
    pt.Width = w
    pt.Height = h
    pt.Left= 0
    pt.Top = 0
    pt.BorderStyle = BorderStyle.Fixed3D
    pl.BackColor = color.pink
    e.Form.Controls("online_Panel" & i).AddControl(pt)
    Dim g As Graphics = pt.Graphics
    Dim fnt As New Font("黑体",10,FontStyle.Bold)  
    
    Dim s1 As String = drs(i-1)("用户")
    g.DrawString(s1,fnt,Brushes.black,10,10) '定义启始为止
    g.DrawImage(getImage(drs(i-1)("图像")),10,30)
    
    pt.Repaint()
Next

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


加好友 发短信
等级:小狐 帖子:321 积分:2468 威望:0 精华:2 注册:2013/1/16 19:33:00
  发帖心情 Post By:2013/5/26 13:26:00 [显示全部帖子]

MouseEnter:
If left(e.Sender.name,13) = "online_Panel_"
    e.Sender.ToolTip = "点击可查看会员信息!"
    e.Sender.BorderStyle = BorderStyle.Fixed3D
End If

MouseLeave:

If left(e.Sender.name,13) = "online_Panel_"

    e.Sender.BorderStyle = BorderStyle.FixedSingle

End If


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


加好友 发短信
等级:小狐 帖子:321 积分:2468 威望:0 精华:2 注册:2013/1/16 19:33:00
  发帖心情 Post By:2013/5/27 20:37:00 [显示全部帖子]

关于重绘的问题:

1.最好将绘制过程写成内部函数,一是方面调用,二是可以参数化调用重绘函数。

2.重绘的时机:执行某个特定操作后,调用内部重绘函数进行绘制,尽量避免无关操作时的重绘。

3.重绘的范围:尽量最小范围重绘。


 回到顶部