Foxtable(狐表)用户栏目专家坐堂 → 未将对象引用设置到对象的实例


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

主题:未将对象引用设置到对象的实例

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


加好友 发短信
等级:小狐 帖子:373 积分:2682 威望:0 精华:0 注册:2020/7/24 10:30:00
未将对象引用设置到对象的实例  发帖心情 Post By:2022/7/7 12:07:00 [显示全部帖子]

老师:
      窗口afterload执行以下代码的时候出现报错,未将对象引用设置到对象的实例。用户名的树形结构出不来,麻烦看一下。

Dim tr As WinForm.TreeView
Dim nd As WinForm.TreeNode
tr = e.Form.Controls("用户")
nd = Tr.Nodes.Add("所有用户","所有用户")
For Each u As UserInfo In Users
    If u.Type = UserTypeEnum.User Then
        If tr.Nodes("所有用户").Nodes.Contains(u.Group) = False Then
            tr.Nodes("所有用户").Nodes.Add(u.Group)
        End If
        tr.Nodes("所有用户").Nodes(u.Group).Nodes.Add(u.Name)
    End If
Next
tr.ExpandAll


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


加好友 发短信
等级:小狐 帖子:373 积分:2682 威望:0 精华:0 注册:2020/7/24 10:30:00
回复:(有点蓝)调试技巧:http://www.foxtable.com/...  发帖心情 Post By:2022/7/7 12:59:00 [显示全部帖子]

运行检测了一下,显示这几句都有错误。我无法理解了。
Dim tr As WinForm.TreeView
Dim nd As WinForm.TreeNode
tr = e.Form.Controls("用户")
nd = Tr.Nodes.Add("所有用户","所有用户")




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


加好友 发短信
等级:小狐 帖子:373 积分:2682 威望:0 精华:0 注册:2020/7/24 10:30:00
回复:(有点蓝)不可能的Dim tr As WinForm.TreeView...  发帖心情 Post By:2022/7/7 14:13:00 [显示全部帖子]

老师:
      下面这两句在运行的时候出现了false 的提示。
tr = e.Form.Controls("用户")
msgbox(tr Is Nothing)————————————————————————提示false 
nd = Tr.Nodes.Add("所有用户","所有用户")
msgbox(nd Is Nothing)————————————————————————提示false 




我试着把e.form.controls("用户")  改成    forms("权限设置").controls("用户")    再次测试还是报错  提示false 

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


加好友 发短信
等级:小狐 帖子:373 积分:2682 威望:0 精华:0 注册:2020/7/24 10:30:00
回复:(有点蓝)提示false 是正确的啊!根本没有...  发帖心情 Post By:2022/7/7 14:35:00 [显示全部帖子]

老师:
     测出来了。
是下面这一句
msgbox(tr.Nodes("所有用户").Nodes(u.Group) is nothing),提示 “ture”。    

检查了用户清单,没有给全部的用户做分组设定,里面有一个人没有分组,导致一直取不到分组数据。所以就报错了。

要怎么写才能避免这种错误?




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


加好友 发短信
等级:小狐 帖子:373 积分:2682 威望:0 精华:0 注册:2020/7/24 10:30:00
回复:(有点蓝)if u.Group > "" then  发帖心情 Post By:2022/7/7 15:58:00 [显示全部帖子]

老师:
      我用  if u.Group > "" then   ,如下,会多出三个组来。
图片点击可在新窗口打开查看

 If tr.Nodes("所有用户").Nodes.Contains(u.Group) = False  则不会 多出组别

图片点击可在新窗口打开查看

我是想 即使没有配置用户组别 ,也不影响权限的设置 。 

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


加好友 发短信
等级:小狐 帖子:373 积分:2682 威望:0 精华:0 注册:2020/7/24 10:30:00
回复:(有点蓝)改后的代码呢? [align=right...  发帖心情 Post By:2022/7/7 16:26:00 [显示全部帖子]

老师:
      其实我就是测试了下面标红色的两句代码产生的不同的效果


Dim tr As WinForm.TreeView
Dim nd As WinForm.TreeNode
tr = e.Form.Controls("用户")
nd = Tr.Nodes.Add("所有用户","所有用户")
For Each u As UserInfo In Users
    If u.Type = UserTypeEnum.User Then

        方法一:If tr.Nodes("所有用户").Nodes.Contains(u.Group) = False Then
      方法二:  If u.Group > "" Then

            tr.Nodes("所有用户").Nodes.Add(u.Group)
        End If
        tr.Nodes("所有用户").Nodes(u.Group).Nodes.Add(u.Name)
    End If
Next
tr.ExpandAll

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


加好友 发短信
等级:小狐 帖子:373 积分:2682 威望:0 精华:0 注册:2020/7/24 10:30:00
回复:(有点蓝)For Each u As UserInfo In Users&nb...  发帖心情 Post By:2022/7/7 16:49:00 [显示全部帖子]

老师:
      按照您的语句判断的确分组不分组都可以获取到,没有报错。

图片点击可在新窗口打开查看

如果我只想保留  第一组与第二组,  tr.Nodes("所有用户").Nodes(u.Group).Nodes.Add(u.Name),
这里面的u.Name 可以直接改成  Nodes.Add(“第一组”,“第二组”)  吗?

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


加好友 发短信
等级:小狐 帖子:373 积分:2682 威望:0 精华:0 注册:2020/7/24 10:30:00
回复:(有点蓝)没看懂什么意思。分组是分组,名称是...  发帖心情 Post By:2022/7/7 17:16:00 [显示全部帖子]


就好像有三组的用户或者名单 
如果我只想保留  第一组与 第二组 的 组别, 那我就无需加载出所有的组别以及组别下面的人员姓名

其中的  tr.Nodes("所有用户").Nodes(u.Group).Nodes.Add(u.Name),

这里面的u.Group 与u.Name 应该怎么修改的?


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


加好友 发短信
等级:小狐 帖子:373 积分:2682 威望:0 精华:0 注册:2020/7/24 10:30:00
回复:(有点蓝)For Each u As UserInfo In Users&nb...  发帖心情 Post By:2022/7/7 17:24:00 [显示全部帖子]

好的,谢谢老师。

 回到顶部