以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 未将对象引用设置到对象的实例 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=178509) |
-- 作者:wukangppbb -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2022/7/7 12:11:00 -- 调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错 |
-- 作者:wukangppbb -- 发布时间:2022/7/7 12:59:00 -- 回复:(有点蓝)调试技巧:http://www.foxtable.com/... 运行检测了一下,显示这几句都有错误。我无法理解了。 Dim tr As WinForm.TreeView Dim nd As WinForm.TreeNode tr = e.Form.Controls("用户") nd = Tr.Nodes.Add("所有用户","所有用户") |
-- 作者:有点蓝 -- 发布时间:2022/7/7 13:55:00 -- 不可能的 Dim tr As WinForm.TreeView msgbox(1) Dim nd As WinForm.TreeNode msgbox(2) tr = e.Form.Controls("用户") msgbox(tr is nothing) nd = Tr.Nodes.Add("所有用户","所有用户") msgbox(nd is nothing) For Each u As UserInfo In Users msgbox(u.name) If u.Type = UserTypeEnum.User Then msgbox(u.Group is nothing) msgbox(tr.Nodes.Contains("所有用户")) If tr.Nodes("所有用户").Nodes.Contains(u.Group) = False Then msgbox(u.Group) tr.Nodes("所有用户").Nodes.Add(u.Group) End If msgbox(tr.Nodes("所有用户").Nodes(u.Group) is nothing) tr.Nodes("所有用户").Nodes(u.Group).Nodes.Add(u.Name) End If Next tr.ExpandAll |
-- 作者:wukangppbb -- 发布时间:2022/7/7 14:13:00 -- 回复:(有点蓝)不可能的Dim tr As WinForm.TreeView... 老师: 下面这两句在运行的时候出现了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 |
-- 作者:有点蓝 -- 发布时间:2022/7/7 14:21:00 -- 提示false 是正确的啊!根本没有理解代码Is Nothing的意思。【tr Is Nothing】如果是true表示tr是空对象,如果是false表示tr是有内容的,可以获取到控件对象。 看哪一个提示框弹出关闭后,出现的“未将对象引用设置到对象的实例”
|
-- 作者:wukangppbb -- 发布时间:2022/7/7 14:35:00 -- 回复:(有点蓝)提示false 是正确的啊!根本没有... 老师: 测出来了。 是下面这一句 msgbox(tr.Nodes("所有用户").Nodes(u.Group) is nothing),提示 “ture”。 检查了用户清单,没有给全部的用户做分组设定,里面有一个人没有分组,导致一直取不到分组数据。所以就报错了。 要怎么写才能避免这种错误? |
-- 作者:有点蓝 -- 发布时间:2022/7/7 14:42:00 -- if u.Group > "" then |
-- 作者:wukangppbb -- 发布时间:2022/7/7 15:58:00 -- 回复:(有点蓝)if u.Group > "" then 老师: 我用 if u.Group > "" then ,如下,会多出三个组来。 用 If tr.Nodes("所有用户").Nodes.Contains(u.Group) = False 则不会 多出组别 我是想 即使没有配置用户组别 ,也不影响权限的设置 。
|
-- 作者:有点蓝 -- 发布时间:2022/7/7 16:17:00 -- 改后的代码呢? [此贴子已经被作者于2022/7/7 16:17:13编辑过]
|