vb.net - VB.NET Form.Show 因未知原因关闭应用程序
问题描述
VB.NET Framework 4.7.2 Visual Studio Community 2019 V16.11.2
我有一个 WinForms 应用程序,并且在大多数情况下,我从一个显示数据表加载的表单开始。这在应用程序事件模块中处理:
Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
If String.IsNullOrEmpty(My.Settings.TheCompany) Then
MainForm = FormConnection
Else
MainForm = FormDataLoad
End If
End Sub
当数据表全部加载时,FormDataLoad 有一个关闭按钮,该按钮由加载所有数据表的过程启用:
With FormDataLoad
.ButtonClose.Visible = True
End With
当按下按钮时,它会调用另一个表单,该表单根据已加载的数据表显示各种图表等:
Private Sub ButtonClose_Click(sender As Object, e As EventArgs) Handles ButtonClose.Click
Me.Close()
End Sub
Private Sub FormDataLoad_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
With FormOverview
.Show()
End With
End Sub
当 FormOverview 加载时,它的标签、图表等都被初始化和绘制,但是神秘地,表单关闭并且应用程序结束。引发应用程序关闭事件:
' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
Private Sub MyApplication_Shutdown(sender As Object, e As EventArgs) Handles Me.Shutdown
MessageBox.Show("Closing the application for some unknown reason")
End Sub
当显示此消息框时,表示应用程序已关闭,但不是由于任何未处理的异常。项目中没有任何代码可以调用 FormOverview.close 所以我不知道发生了什么。
表单加载代码在这里:
Private Sub FormOverview_Load(sender As Object, e As EventArgs) Handles Me.Load
With Me
'Set the form caption and back colour and font
.Text = "Retail Management Hero Data Visualisation Overview"
.BackColor = Color.GhostWhite
.Font = U.BasicFontSmall
'Add event handler for the DAL
AddHandler D.ConnectionOpened, AddressOf Connected
'Form level variables for the KPJs
Dim ITO As String = ""
Dim ATV As String = ""
Dim CRR As String = ""
Dim GMROI As String = ""
Dim OOS As String = ""
Dim StocksSales As String = ""
With KPIData.Rows(0)
Me.Text = My.Settings.TheCompany & " " & Me.Text
ITO = .Item("ITO").ToString
CRR = .Item("CRR").ToString
ATV = "€" & .Item("ATV").ToString
GMROI = "€" & .Item("GMROI").ToString
OOS = .Item("OOSRatio").ToString
StocksSales = .Item("StocksToSales").ToString
End With
For Each CTL As Control In .Controls
If TypeOf CTL Is Label Then
With CTL
If .Name.Contains("Value") Then
.Font = U.BasicFontSuperLarge
.BackColor = Color.Yellow
Else
.BackColor = U.Spurs
.ForeColor = Color.GhostWhite
End If
End With
End If
Next
With .LabelReportDate
.Text = "Reports As Of " & ReportDate
End With
With .LabelATVValue
.Text = U.DecimalToSuperSubFormat(ATV, True)
End With
With .LabelGMROIValue
.Text = U.DecimalToSuperSubFormat(GMROI, True)
End With
With .LabelCRRValue
.Text = U.DecimalToSuperSubFormat(CRR, True) & "%"
End With
With .LabelITOValue
.Text = U.DecimalToSuperSubFormat(ITO, True)
End With
With .LabelOOSValue
.Text = U.DecimalToSuperSubFormat(OOS, True) & "%"
End With
With .LabelStocksSalesValue
.Text = U.DecimalToSuperSubFormat(StocksSales, True) & "%"
End With
'Extract the names of the X and Y axes
Dim Xname As String = ""
Dim Yname As String = ""
With WineData
Xname = .Columns("Department").ColumnName
Yname = .Columns("Day").ColumnName
End With
'Draw the charts
DrawColumnChart(WineData, .ChartWine, "Wine sales", Xname, Yname, 250, False)
DrawColumnChart(OtherData, .ChartNonWine, "Other sales", Xname, Yname, 25, False)
'Centre on the screen
.CenterToScreen()
End With
End Sub
所以,应该发生的是这个表格显示中心屏幕,图表等都正确显示。如果有人有任何想法,我将不胜感激。
德莫特
解决方案
我发现了导致问题的原因。
在项目的属性中,在Application
选项卡中,有组合选择器, Shutdown mode
.
我选择的选项是When startup form closes
- 通过将其更改为When last form closes
问题消失了。
像许多问题一样,当你看得太久时,你只能只见树木不见森林。
推荐阅读
- unicode - 从 UTF16 字符串的末尾修剪 UTF8
- reactjs - 反应路由器无法完全刷新apache服务器中的页面
- azure - 部署在 ACI 或 AKS 上的 AMLS 模型的服务超时 1 分钟
- docker - 容器化应用程序 - 设计模式
- c - 解码这些 Valgrind 调试器内存错误在我的代码中的含义
- powerbi - 可视化之间的单向交互
- reactjs - React Redux 存储更新 - 更改不更新组件
- xamarin.forms - Xamarin Forms 中 Android 项目中的 Xamarin iOS 参考
- nativescript - 设置平台特定属性后强制视图重绘
- javascript - 如何在没有手动索引的情况下在 Javascript 中对字母等级进行排序