以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 动态生成navbar的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107361) |
-- 作者:liufucan -- 发布时间:2017/9/26 17:01:00 -- 动态生成navbar的问题 提示 未将对象引用设置到对象的实例。另外SelectedIndexChanged事件怎么设置? Dim o As WinForm.NavBar Dim fnt As New Font("微软雅黑",9) o.name="o" o.dock=5 \'锚定 o.VisualStyle=2 \'主题 o.Font =fnt Dim PageList As List(Of String) If _UserRoles<>"系统管理员" Then If len(_UserRoles)>0 Then PageList = dt.GetValues("分类","用户标识=\'" & _UserRoles & "\' and 单据权限=1","模块顺序,分类顺序,单据顺序") Else PageList = dt.GetValues("分类","用户标识=\'" & _UserID & "\' and 单据权限=1","模块顺序,分类顺序,单据顺序") End If Else PageList = dt.GetValues("分类","启用=1","模块顺序,分类顺序,顺序") End If For i As Integer =0 To PageList.Count-1 Dim p1 As WinForm.NavPage\'新建页面 Dim r As Integer p1.name=PageList(i) p1.text= PageList(i) p1.font = fnt o.NavPages.add(p1.name,p1.name,"") Dim ButtonList As List(of String()) If _UserRoles<>"系统管理员" Then If len(_UserRoles)>0 Then ButtonList = dt.GetValues("单据|单据图标","用户标识=\'" & _UserRoles & "\' and 单据权限=1 and 分类=\'" & PageList(i) & "\'","模块顺序,分类顺序,单据顺序") Else ButtonList = dt.GetValues("单据|单据图标","用户标识=\'" & _UserID & "\' and 单据权限=1 and 分类=\'" & PageList(i) & "\'","模块顺序,分类顺序,单据顺序") End If Else ButtonList = dt.GetValues("单据|单据图标","启用=1 and 分类=\'" & PageList(i) & "\'","模块顺序,分类顺序,顺序") End If For Each Ary As String() In ButtonList r=r+1 Dim but As WinForm.Button but = e.Form.CreateControl("navbar_" & Ary(0) , ControlTypeEnum.Button) With but .Text = Ary(0) .Left = 10 .Height=30 .Width=180 .Top = (r-1)*30 .Font=fnt .FlatStyle = FlatStyle.flat .BackColor = Color.Transparent .MouseOverBackColor=Color.DarkTurquoise .BorderSize = 0 .Image=GetImage(Ary(1).Split(".")(0)& "_navbar." & Ary(1).Split(".")(1)) .ImageAlign=ContentAlignment.MiddleLeft End With o.NavPages(PageList(i)) .controls.add(but.basecontrol) Next r=0 Next e.Form.Controls("Panel1").basecontrol.controls.add(o) |
-- 作者:有点甜 -- 发布时间:2017/9/26 17:34:00 -- 不建议动态生成 NavBar 控件,因为这样你就无法绑定其 SelectedIndexChanged 事件。
建议你把控件先放到窗口,再对其操作吧,NavPage 可以随意增加。
再有就是,你必须add NavPage 之后,才能设置其 name、text 等信息。 |
-- 作者:liufucan -- 发布时间:2017/9/26 17:43:00 -- SelectedIndexChanged 事件用全局代码也不行吗? |
-- 作者:有点甜 -- 发布时间:2017/9/26 18:28:00 -- 以下是引用liufucan在2017/9/26 17:43:00的发言:
SelectedIndexChanged 事件用全局代码也不行吗?
不过窗口没有全局 SelectedIndexChanged 事件。 |
-- 作者:liufucan -- 发布时间:2017/9/26 19:07:00 -- 窗口加入navbar至少得保留一个页面怎么办 |
-- 作者:有点蓝 -- 发布时间:2017/9/26 20:15:00 -- 什么页面?截图说明 |
-- 作者:liufucan -- 发布时间:2017/9/26 20:56:00 -- 我是说navbar自带的页面无法删光,我的页面还是动态生成到navbar的 |
-- 作者:有点蓝 -- 发布时间:2017/9/26 21:01:00 -- 我测试没有问题,完全可以删除 Dim nav As WinForm.NavBar = e.Form.Controls("NavBar1") nav.NavPages.Clear |
-- 作者:liufucan -- 发布时间:2017/9/26 21:04:00 -- 原来是用clear,我用delete无法删除指定页面 |
-- 作者:有点蓝 -- 发布时间:2017/9/26 21:07:00 -- 用一个功能,就要了解一个功能的属性 |