以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]树节点特殊显示  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=24825)

--  作者:chnfo
--  发布时间:2012/10/24 10:39:00
--  [求助]树节点特殊显示
目的:选中表的节点,定位树节点(或直接选择树节点),然后使树节点特殊显示(例如底色为红色,也可以使节点名称字体变为红色,因为现在设置的选中底色是灰色,看得不太清楚)
我在表的PositionChanged事件里加了定位树节点代码。
然后在树节点的AfterSelect事件里加了使节点底色变为红色的代码。

问题:
(1)如果表里的行发生变化,原来树节点的底色红色没有消除,如果把表里的行全部点一遍,树节点也会都成红底色,起不到特殊显示的目的。
(2)我想在选定行之后,在StatusBar里显示行的Code列值,但在切换到表B时,左下角仍然提示的是表A的Code列值,容易引起误解。如何在切换表时,消除StatusBar的错误提示?


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:nodeselect节点改变底色.table
[此贴子已经被作者于2012-10-24 11:50:33编辑过]

--  作者:lin_hailun
--  发布时间:2012/10/24 15:24:00
--  
 哈哈,第一个问题,终于是模拟成功了。如下。

Dim tree As System.Windows.Forms.TreeView = mytree.BaseControl

For i As Integer = tree.Controls.Count - 1 To 0 Step -1
    If tree.Controls(i).Name = "SelectLab" Then
        tree.Controls.RemoveAt(i)
    End If
Next

Dim selCon As  System.Windows.Forms.Control = tree.Controls("SelectLab")
Dim label As New System.Windows.Forms.Label
label.Name = "SelectLab"
label.AutoSize = False
label.BackColor = Color.Red
label.ForeColor = e.Node.ForeColor
label.Font = tree.Font
mytree.BaseControl.Controls.Add(label)
selCon = Label
Dim node As System.Windows.Forms.TreeNode = tree.SelectedNode
selCon.Size = new Size(node.Bounds.Width, node.Bounds.Height)
selCon.Location = new Point(node.Bounds.X, node.Bounds.Y)
selCon.Text = e.Node.Text

--  作者:lin_hailun
--  发布时间:2012/10/24 15:26:00
--  
 第二个问题,比较简单,不是有MainTableChange事件么?项目属性那里。

 然后设置 StatusBar.Message1 = ""

--  作者:chnfo
--  发布时间:2012/10/24 16:21:00
--  
图片点击可在新窗口打开查看
太佩服了。
五体投地……

里面的一些代码都是专业程序员才能掌握的,对我来说要求太高了,只能“拿来主义”。
非常感谢。
[此贴子已经被作者于2012-10-24 16:24:01编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/26 16:59:00
--  

[此贴子已经被作者于2012-11-26 16:58:49编辑过]