Foxtable(狐表)用户栏目专家坐堂 → 离开目录树后,节点背景色问题


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

主题:离开目录树后,节点背景色问题

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


加好友 发短信
等级:童狐 帖子:211 积分:1997 威望:0 精华:0 注册:2014/11/11 10:23:00
  发帖心情 Post By:2016/1/23 10:19:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:nodeselect节点改变底色.table


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/23 10:39:00 [只看该作者]

树控件没有滚动事件,用api太麻烦。还是用回第一种方法吧

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


加好友 发短信
等级:童狐 帖子:211 积分:1997 威望:0 精华:0 注册:2014/11/11 10:23:00
  发帖心情 Post By:2016/1/23 12:46:00 [只看该作者]

第一种方法提示出错

 


图片点击可在新窗口打开查看此主题相关图片如下:截图未命名.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/23 14:26:00 [只看该作者]

AfterLoad事件改改


Dim tr As System.Windows.Forms.TreeView = e.Form.Controls("TreeView1").BaseControl
tr.HideSelection = False
tr.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawText
AddHandler tr.DrawNode, AddressOf TreeView_DrawNode

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


加好友 发短信
等级:童狐 帖子:211 积分:1997 威望:0 精华:0 注册:2014/11/11 10:23:00
  发帖心情 Post By:2016/1/23 23:11:00 [只看该作者]

这个怎么应用到开发版中?


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


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

以下是引用lhlh在2016/1/23 23:11:00的发言:

这个怎么应用到开发版中?

 

你去下载开发版的地方,下载一个商业版安装后,就可以打开.table的文件了。


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


加好友 发短信
等级:童狐 帖子:211 积分:1997 威望:0 精华:0 注册:2014/11/11 10:23:00
  发帖心情 Post By:2016/1/24 13:53:00 [只看该作者]

目录树节点高度加大后,节点文字显示不理想,这里面什么地方可以设定文字垂直靠中的?

  

Dim sender As Object = Args(0)
Dim e As Object = Args(1)
'绘制文本和底色
If (e.State And System.Windows.Forms.TreeNodeStates.Selected) <> 0 Then
    e.Graphics.FillRectangle(Brushes.Lime, e.Node.Bounds)  '背景色
    Dim nodeFont As Font = e.Node.NodeFont
    If nodeFont Is Nothing Then
        nodeFont = DirectCast(sender, System.Windows.Forms.TreeView).Font
    End If
    e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.red, Rectangle.Inflate(e.Bounds, 2, 0))  '字体色
Else
    e.DrawDefault = True    '默认样式
End If
'绘制边框
If (e.State And System.Windows.Forms.TreeNodeStates.Focused) <> 0 Then
    Using focusPen As New Pen(Color.Black)    '边框色
    focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot
    Dim focusBounds As Rectangle = e.Node.Bounds
    focusBounds.Size = New Size(focusBounds.Width - 1, focusBounds.Height - 1)
    e.Graphics.DrawRectangle(focusPen, focusBounds)
End Using
End If

 


图片点击可在新窗口打开查看此主题相关图片如下:20160124135140.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/1/24 14:00:55编辑过]

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


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

Dim sender As Object = Args(0)
Dim e As Object = Args(1)
'绘制文本和底色
        Dim nodeFont As Font = e.Node.NodeFont
        If nodeFont Is Nothing Then
            nodeFont = DirectCast(sender, System.Windows.Forms.TreeView).Font
        End If

        If (e.State And System.Windows.Forms.TreeNodeStates.Selected) <> 0 Then
            e.Graphics.FillRectangle(Brushes.Lime, e.Node.Bounds)  '背景色
            e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.Red, e.bounds.x, e.bounds.y+10)  '字体色
        Else
            Dim a1 As SolidBrush = New SolidBrush(e.Node.TreeView.BackColor)
            e.Graphics.FillRectangle(a1, e.Node.Bounds)  '背景色
            e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.Black, e.bounds.x, e.bounds.y+10)  '字体色
        End If


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


加好友 发短信
等级:童狐 帖子:211 积分:1997 威望:0 精华:0 注册:2014/11/11 10:23:00
  发帖心情 Post By:2016/1/24 16:05:00 [只看该作者]

谢谢大家的帮助,这下效果完美了。


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