以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于退出窗口时报错,请老师们指导  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=190622)

--  作者:wangtaolove
--  发布时间:2024/2/26 10:44:00
--  [求助]关于退出窗口时报错,请老师们指导
每次通过导航栏增加页签后,增加的页签不关闭,点击安全退出就会报错。如果把页签关闭掉,再退出就不会报错,通过调试,安全退出代码在执行到关闭主窗口时报错,试了好多办法,没解决,请老师们给指导下。


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

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

安全退出的代码如下:
以下内容为程序代码:

1 Dim Result As DialogResult
2 Result = MessageBox.Show("确定要退出系统吗?", "确认提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
3 If Result = DialogResult.OK Then
4 e.Form.Controls("Panel1").Enabled = False
5 Dim dr As DataRow
6 Dim hyzh As String = e.Form.Controls("账号").Text
7 hyzh = hyzh.Trim(" ", "登", "录", "账", "号", ":", "[", "]")
8 dr = DataTables("账户管理").Find("[用户账号] = \'" & hyzh & "\' ")
9 dr("用户状态") = False
10 Forms("主窗口").Close()
11 Syscmd.Project.Exit(True)
12 Else
13 e.Form.Controls("Panel1").Enabled = True
14 End If

导航栏的代码如下:
以下内容为程序代码:

1 \' 获取选项卡控件
2 Dim tab As WinForm.TabControl = e.Form.Controls("TabControl2")
3 \' 获取导航栏控件
4 Dim bar As WinForm.NavBar = e.sender
5 \' 检查是否已经存在相应的选项卡页签
6 Dim tabPageExists As Boolean = False
7 For i As Integer = 0 To tab.TabPages.Count - 1
8 If tab.TabPages(i).Name = bar.SelectedPage.ButtonText Then
9 \' 如果存在,设置选中的页签并标记存在
10 tab.SelectedIndex = i
11 tabPageExists = True
12 Exit For
13 End If
14 Next
15 If Not tabPageExists Then
16 \' 如果选项卡页签不存在,检查是否已经存在相应的窗体
17 If Forms.Contains(bar.SelectedPage.ButtonText) Then
18 \' 如果窗体已存在,直接切换到对应选项卡
19 \' tab.TabPages.Add(bar.SelectedPage.ButtonText, bar.SelectedPage.ButtonText)
20 tab.SelectedIndex = tab.TabPages.Count - 1
21 \' 停止窗体重绘,提高性能
22 e.Form.StopRedraw
23 tab.TabPages.Add(bar.SelectedPage.ButtonText, bar.SelectedPage.ButtonText)
24 Forms(bar.SelectedPage.ButtonText).Open( - 1000, - 1500)
25 Forms(bar.SelectedPage.ButtonText).BaseForm.TopLevel = False
26 Forms(bar.SelectedPage.ButtonText).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
27 Forms(bar.SelectedPage.ButtonText).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill
28 Forms(bar.SelectedPage.ButtonText).BaseForm.AutoScroll = True
29 tab.TabPages(bar.SelectedPage.ButtonText).Controls.Add(Forms(bar.SelectedPage.ButtonText).BaseForm)
30 tab.SelectedPage = tab.TabPages(bar.SelectedPage.ButtonText)
31 BaseMainForm.Activate()
32 e.Form.ResumeRedraw
33 Else
34 \' 如果窗体不存在,显示建设中的提示信息
35 MessageBox.Show("建设中……敬请期待!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning)
36 End If
37 End If
38





--  作者:wangtaolove
--  发布时间:2024/2/26 10:49:00
--  

报错的详细信息:

有关调用实时(JIT)调试而不是此对话框的详细信息,

请参见此消息的结尾。

System.NullReferenceException: 未将对象引用设置到对象的实例。

    Foxtable.oO0oOoo.o_____0Oo.0__.(Control A_0)

    Foxtable.WinForm.Form.OOO.ooo_.(Object A_0, CancelEventArgs A_1)

    System.Windows.Forms.Control.OnValidating(CancelEventArgs e)

    System.Windows.Forms.Control.NotifyValidating()

    System.Windows.Forms.Control.PerformControlValidation(Boolean bulkValidation)

    System.Windows.Forms.ContainerControl.ValidateThroughAncestor(Control ancestorControl, Boolean preventFocusChangeOnError)

    System.Windows.Forms.ContainerControl.EnterValidation(Control enterControl)

    System.Windows.Forms.ContainerControl.UpdateFocusedControl()

    System.Windows.Forms.ContainerControl.AssignActiveControlInternal(Control value)



--  作者:wangtaolove
--  发布时间:2024/2/26 10:50:00
--  

    System.Windows.Forms.ContainerControl.ActivateControlInternal(Control control, Boolean originator)

    System.Windows.Forms.ContainerControl.ActivateControlInternal(Control control, Boolean originator)

    System.Windows.Forms.ContainerControl.ActivateControlInternal(Control control)

    System.Windows.Forms.ContainerControl.WmSetFocus(Message& m)

    System.Windows.Forms.ContainerControl.WndProc(Message& m)

    System.Windows.Forms.SplitContainer.WndProc(Message& msg)

    System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

    System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

    System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


--  作者:有点蓝
--  发布时间:2024/2/26 10:58:00
--  
foxtable不支持也不建议使用这种嵌入窗口到其它窗口的用法,也无法对这种用法出现的问题提供任何技术支持