重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果是在设计模式下,在控件上单击右键,有“置于顶层”“置于底层”的选项。
我们提供的服务有:成都做网站、网站设计、外贸营销网站建设、微信公众号开发、网站优化、网站认证、浦北ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的浦北网站制作公司
如果对于已经生成好的程序,那么已经在设计模式下添加到窗体上的控件是不能够调整显示顺序的,倒是通过 Me.Controls.Add(Me.Controls) 这种方式动态添加的控件可以调整顺序,哪个被先 Add 了,哪个就显示在顶端。
如果对这个比较好奇的话,可以到 Form1.Designer.vb 下找到 InitializeComponent() 这一段,看里面不同的 Me.Controls.Add(Me.Controls) 的顺序会导致窗体呈现出怎样的结果。
说实话一般不是你这样存储的,一般是用一个字段存储ID号,然后用另一个字段存储上级单位的ID号,然后用递归函数生成TreeView。建议你增加一个字段,然后将编号解析出的上级单位存储在里面。以下是我的一个程序用的递归函数:
表名是unit,其中包含了单位名称unit_name,编号unit_id,Unit_upper就是上级单位的id号。
调用方式是 addtree(ds1, TreeView1.Nodes, 0),其中ds1是一个DataSet,对应单位的表,treeview1是控件名称,0是固定值,与表中根节点部门的Unit_upper一致(这个单位没有上级)。
Public Function addtree(ByVal ds As DataSet, ByVal treename As TreeNodeCollection, ByVal x1 As Integer) As Boolean
Dim dt As DataTable = ds.Tables("unit")
Dim dm As BindingManagerBase = Me.BindingContext(ds, "unit")
Dim dr As DataRow() = dt.Select("unit_upper=" x1.ToString)
Dim dr1 As DataRow
Dim nd As TreeNode
Dim nd1 As TreeNode
Dim x2 As Integer
If dr.GetLength(0) 0 Then
For Each dr1 In dr
nd = treename.Add(dr1("unit_name"))
nd.Tag = (dr1("unit_id"))
x2 = treename.IndexOf(nd)
addtree(ds, treename.Item(x2).Nodes, dr1("unit_id"))
Next
End If
Return True
End Function
多层嵌套调用过程不能让控件反复显示和隐藏啊,会给用户一种闪烁的感觉,建议第一次进入前隐藏,结束后显示出来