FormClosing 事件中平板电脑和消息框之间的问题
Issue between tablet and messagebox on FormClosing event
我正在开发一个 WinForms 应用程序,运行 遇到了一个非常奇怪的错误。我在 FormClosing 事件中放置 MessageBox 时遇到问题,导致主窗体调整大小并终止我的自定义对话框上的显示。除了 MessageBox 之外,我取出了所有其他代码来确认问题。该问题未出现在 Windows PC 桌面上,但仅出现在 MS Surface Go 上。这是 FormClosing
的工作代码
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
If e.CloseReason = CloseReason.UserClosing Then
Dim form As New frm_NumEnter
form.isPassword = True
form.String1 = closeString
If form.ShowDialog(Me) = DialogResult.OK Then
If form.result = "####" Then
form.Close()
Else
'MessageBox.Show("Password is Wrong. Please Retry.") Do not turn this on. Causes display issues.
form.Close()
Form1_FormClosing(sender, e)
End If
Else
e.Cancel = True
End If
End If
End Sub
消息框目前已被注释掉,因为那是工作代码。
有人知道为什么会这样吗?我一直在寻找答案,但找不到。
试试这个
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
If e.CloseReason = CloseReason.UserClosing Then
e.Cancel = True
Dim form As New frm_NumEnter
form.isPassword = True
form.String1 = "closeString"
If form.ShowDialog(Me) = DialogResult.OK Then
If form.result = "####" Then
form.Close()
e.Cancel = False
Else
MessageBox.Show("Password is Wrong. Please Retry.")
form.Close()
End If
End If
End If
End Sub
基于汉斯的评论。
问题是 Surface Go 默认调用 WPF MessageBox class。使用更明确地调用 Forms.MessageBox.Show(...)
的 MessageBox class 解决了这个问题。这仅发生在与应用程序一起关闭的表单上。我不确定这是为什么,但我推测这是因为 WPF 不像 WinForms 那样使用 FormClosing 事件。
我正在开发一个 WinForms 应用程序,运行 遇到了一个非常奇怪的错误。我在 FormClosing 事件中放置 MessageBox 时遇到问题,导致主窗体调整大小并终止我的自定义对话框上的显示。除了 MessageBox 之外,我取出了所有其他代码来确认问题。该问题未出现在 Windows PC 桌面上,但仅出现在 MS Surface Go 上。这是 FormClosing
的工作代码Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
If e.CloseReason = CloseReason.UserClosing Then
Dim form As New frm_NumEnter
form.isPassword = True
form.String1 = closeString
If form.ShowDialog(Me) = DialogResult.OK Then
If form.result = "####" Then
form.Close()
Else
'MessageBox.Show("Password is Wrong. Please Retry.") Do not turn this on. Causes display issues.
form.Close()
Form1_FormClosing(sender, e)
End If
Else
e.Cancel = True
End If
End If
End Sub
消息框目前已被注释掉,因为那是工作代码。
有人知道为什么会这样吗?我一直在寻找答案,但找不到。
试试这个
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
If e.CloseReason = CloseReason.UserClosing Then
e.Cancel = True
Dim form As New frm_NumEnter
form.isPassword = True
form.String1 = "closeString"
If form.ShowDialog(Me) = DialogResult.OK Then
If form.result = "####" Then
form.Close()
e.Cancel = False
Else
MessageBox.Show("Password is Wrong. Please Retry.")
form.Close()
End If
End If
End If
End Sub
基于汉斯的评论。
问题是 Surface Go 默认调用 WPF MessageBox class。使用更明确地调用 Forms.MessageBox.Show(...)
的 MessageBox class 解决了这个问题。这仅发生在与应用程序一起关闭的表单上。我不确定这是为什么,但我推测这是因为 WPF 不像 WinForms 那样使用 FormClosing 事件。