【发布时间】:2014-06-14 21:33:19
【问题描述】:
我在使用 RightToLayout 布局时遇到了一个奇怪的行为: 我的表单会自动关闭。
我创建了一个简单的项目来重现该问题:
在 VS2012 中新建一个 VB.NET 项目,并在其中添加表单“Form1”和“Form2”。 将“Form1”设置为起始表单。
然后将以下代码添加到“Form1”中:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.Hide()
Dim f As New Form2
f.ShowDialog()
MessageBox.Show("After dialog closed.")
modControls.setFormRTL(Me) 'This line causes the Form2 to automatically close. Why??? This line should only be processed AFTER the dialog has been shown and closed
End Sub
End Class
将以下代码添加到“Form2”中:
Public Class Form2
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load
modControls.setFormRTL(Me)
End Sub
End Class
将名为“modControls”的模块添加到项目中。 添加以下代码:
Module modControls
Public Sub setFormRTL(ByVal uForm As Form)
uForm.RightToLeft = RightToLeft.Yes
End Sub
End Module
没有 setFormRTL,我的项目工作得很好,但是有了它,“Form2”会自动关闭。您可以看到这一点,因为显示了消息框。
当我删除线时
modControls.setFormRTL(Me)
从 Form1 加载,它又可以正常工作了。 是的,我的意思是来自“Form1”,而不是来自“Form2”!!!
现在这真的很奇怪,因为它根本不重要,因为在关闭对话框之前未处理此行。 我希望有人明白我的意思。
谁能解释一下这里可能发生的事情?
【问题讨论】:
标签: vb.net winforms visual-studio-2012 right-to-left