以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:窗口主菜单的项目单击事件代码问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154217)

--  作者:昱飞哥
--  发布时间:2020/9/8 12:33:00
--  求助:窗口主菜单的项目单击事件代码问题
有窗口菜单如下:

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看
常用网址里的项目是根据datatables(“网址”)自动生成的,如下图:

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看
为了实现:生成之后的网址单击打开对应网址,于是,我在ItemClick事件中写下如下代码:

If e.StripItem.ParentItem.text = "常用网址" Then
    Dim dr As DataRow = DataTables("常用网址表").find("网站名称 = \'"& e.StripItem.Name &"\'")
    If dr IsNot Nothing Then
        Dim Proc As New Process \'定义一个新的Process
        Proc.File = dr("网址") \'指定要打开的网页地址
        Proc.Start()
    End If
End If

出现报错:

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:窗口,开发者主控窗口,ItemClick
详细错误信息:
未将对象引用设置到对象的实例。

请教老师,上述代码哪里有问题?




--  作者:有点蓝
--  发布时间:2020/9/8 13:40:00
--  
调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm

msgbox(e.StripItem.ParentItem is nothing)
If e.StripItem.ParentItem.text = "常用网址" Then
msgbox(e.StripItem.Name)
msgbox(e.StripItem.text)
    Dim dr As DataRow = DataTables("常用网址表").find("网站名称 = \'"& e.StripItem.Name &"\'")
    If dr IsNot Nothing Then
msgbox(dr("网址") )
        Dim Proc As New Process \'定义一个新的Process
        Proc.File = dr("网址") \'指定要打开的网页地址
        Proc.Start()
    End If
End If

--  作者:昱飞哥
--  发布时间:2020/9/8 15:17:00
--  
老师,终于知道哪里出问题了。
是因为:比方单击“常用工具”,因为它没有父项目,所以代码出错。
改成下面的代码之后运行成功:

If e.StripItem.ParentItem IsNot Nothing Then      \'如果当前单击的菜单项目存在父项目(这句代码一定要加
    If e.StripItem.ParentItem.text = "常用网址" Then     \'且当前单击的菜单项目的父项目的标题是"常用网址" 
        Dim dr As DataRow = DataTables("常用网址表").find("网站名称 = \'"& e.StripItem.Name &"\'")
        If dr IsNot Nothing Then
            Dim Proc As New Process \'定义一个新的Process
            Proc.File = dr("网址") \'指定要打开的网页地址
            Proc.Start()
        End If
    End If
End If