Vb.net 我有一张父母和孩子的表格。但是当我关闭孩子的时候,它冻结了。为什么?

Vb.net 我有一张父母和孩子的表格。但是当我关闭孩子的时候,它冻结了。为什么?,vb.net,Vb.net,当我从子窗体单击关闭按钮时,子窗体将移动到屏幕,然后整齐地关闭。但是当我通过父窗体关闭按钮关闭它时,子窗体将移动到屏幕,然后冻结…为什么???tnx提前 Public Class ParentForm Private Sub Show_Click(sender As Object, e As EventArgs) Handles button.Click ChildForm.MdiParent = Me ChildForm.Show() End S

当我从子窗体单击关闭按钮时,子窗体将移动到屏幕,然后整齐地关闭。但是当我通过父窗体关闭按钮关闭它时,子窗体将移动到屏幕,然后冻结…为什么???tnx提前

 Public Class ParentForm

   Private Sub Show_Click(sender As Object, e As EventArgs) Handles button.Click
        ChildForm.MdiParent = Me
        ChildForm.Show()
   End Sub

   Private Sub Close_Click(sender As Object, e As EventArgs) Handles Login.Click
        ChildForm.Refresh()
        Do Until Me.Location.X = ChildForm.Width
            ChildForm.Location = New Point(ChildForm.Location.X + 1, 250)
        Loop
        ChildForm.Close()
   End Sub
end class

Public Class ChildForm

   Private Sub ChildForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Location = New Point(0, 250)
        Me.Refresh()
   end Sub

   Sub anim() Handles Me.Shown
        Me.Refresh()
        Do Until Me.Location.X = 350
            Me.Location = New Point(Me.Location.X + 1, 250)
        Loop
   End Sub

   Private Sub Close_Click(sender As Object, e As EventArgs) Handles Close.Click
        Do Until Me.Location.X = Me.Width + 1000
            Me.Location = New Point(Me.Location.X + 1, 250)
        Loop
        Me.Close()
   End Sub

end class

因为这行中有一个bug:

 Do Until Me.Location.X = ChildForm.Width
     ChildForm.Location = New Point(ChildForm.Location.X + 1, 250)
 Loop
首先,您使用了错误的对象(
Me
,而不是
ChildForm
)。而且,你的逻辑似乎不正确;如果子窗体的位置比其宽度更右(例如,如果子窗体的宽度为300,其X位置为301),则代码将进入无限循环。尝试类似以下内容:

For i As Integer = 0 To ChildForm.Width
    ChildForm.Left += 1
Next
这将使它向右移动其宽度,并保持其在屏幕上的垂直位置

编辑:哦,看来您希望父窗体关闭。在这种情况下,请使用以下选项:

For i As Integer = 0 To Me.Width
    Me.Left += 1
Next

我来试试……tnx伙计!:D