以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:目录树节点双击打开窗体,如果节点名称对应没有窗体,怎么判断呢?当无窗体时不提示,有窗体时则打开。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92416)

--  作者:李孝春
--  发布时间:2016/11/3 1:16:00
--  求助:目录树节点双击打开窗体,如果节点名称对应没有窗体,怎么判断呢?当无窗体时不提示,有窗体时则打开。

求助:目录树节点双击打开窗体,如果节点名称对应没有窗体,怎么判断呢?当无窗体时不提示,有窗体时则打开。


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

代码如下;

If e.node.level=4 Then
    For Each frm As WinForm.Form In Forms
        \'Output.Show(frm.Name)
        If "       " Then                蓝色部分代码怎么写呢?
            Forms(e.node.text).show
        Else
            MessageBox.Show("无窗体")     
        End If
    Next
 End If







--  作者:有点蓝
--  发布时间:2016/11/3 8:40:00
--  
If e.node.level=4 Then
    If Forms.Contains(e.node.text)
        Forms(e.node.text).show
    Else
        MessageBox.Show("无窗体")
    End If
    
End If

--  作者:李孝春
--  发布时间:2016/11/3 9:12:00
--  回复:(有点蓝)If e.node.level=4 Then   ...
If e.node.level=4 Then
    If Forms.Contains(e.node.text) Then  \'判断是否存在节点名的窗体,如果存在
        Forms(e.node.text).show
    Else
        MessageBox.Show("无窗体")
    End If
End If

没有起到效果哦  还是和顶楼图片一样弹出某个窗体不存在  
改成下面的也一样无效!
If Forms.Contains(e.node.text)= True Then  \'判断是否存在节点名的窗体,如果存在

--  作者:blackzhu
--  发布时间:2016/11/3 9:29:00
--  
 代码肯定有效 你判断下究竟是第几个节点 明明只有 0 1 2 3 那来的4

--  作者:有点蓝
--  发布时间:2016/11/3 9:30:00
--  
这里代码没有问题,检查其它地方的代码。不行就上例子
[此贴子已经被作者于2016/11/3 9:29:52编辑过]

--  作者:李孝春
--  发布时间:2016/11/3 9:52:00
--  回复:(有点蓝)这里代码没有问题,检查其它地方的代...
确实是红色部分代码有问题:【红色部分代码是实现在窗体中加入节点名称的窗体,不知道有没有办法实现以下代码完美配合呢?】
\'Dim PB As WinForm.Panel = e.Form.Controls("Panel1")
\'Dim Name As String = e.node.Name
\'Forms(Name).OPEN(-1000,-1500)
\'Forms(Name).BaseForm.TopLevel = False
\'Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
\'Forms(Name).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill
\'
\'PB.BaseControl.Controls.Clear
\'PB.BaseControl.Controls.add(Forms(Name).BaseForm)


If e.node.level=4 Then
    If Forms.Contains(e.node.text)= True Then  \'判断是否存在节点名的窗体
        Forms(e.node.text).show
    \'Else
        \'MessageBox.Show("无窗体")
    End If
End If

--  作者:李孝春
--  发布时间:2016/11/3 9:54:00
--  回复:(blackzhu)?代码肯定有效 你判断下究竟是...
为了怕后续增加节点 所以多弄了几个
朱老师应该有办法实现节点数自动增加后,而不用修改这个数字的办法吧?

下面是想展开节点 结果出现如图错误,参照帮助搞的。

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看
tv.Nodes(1).Expand()也一样错误!
[此贴子已经被作者于2016/11/3 9:55:14编辑过]

--  作者:有点蓝
--  发布时间:2016/11/3 10:06:00
--  
回6楼

If e.node.level=4 Then
    If Forms.Contains(e.node.text)= True Then  \'判断是否存在节点名的窗体
        Dim PB As WinForm.Panel = e.Form.Controls("Panel1")
        Dim Name As String = e.node.text
        Forms(Name).OPEN(-1000,-1500)
        Forms(Name).BaseForm.TopLevel = False
        Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
        Forms(Name).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill
        
        PB.BaseControl.Controls.Clear
        PB.BaseControl.Controls.add(Forms(Name).BaseForm)
    Else
        MessageBox.Show("无窗体")
    End If
End If

--  作者:有点蓝
--  发布时间:2016/11/3 10:07:00
--  
回7楼

tv.ExpandAll

--  作者:李孝春
--  发布时间:2016/11/3 10:53:00
--  回复:(有点蓝)回7楼tv.ExpandAll
不要全部展开节点哦 
要的是只打开
贵州省
黔南州
县级院名
上述三个节点