2011-02-18 101 views
0

我正在制作一个非常简单的游戏应用程序。主窗体(Form1)上有一个Button1按钮。 (非常有创意的命名,呃?)应用程序的重点是在整个表单中随意移动按钮。我的问题是,当我开始调试时(我使用的是Visual Studio 2010),表单从不显示,当我打开Windows任务管理器时,我的.exe的名称从不显示在进程列表中。我想知道我使用的代码是否与此有关。这里是我的代码:VB.NET中的Windows窗体问题

Class Form1 
    Private Sub Form1_Load(...) 
     InitializeComponent() 
     While True 
      MoveIt() 
     End While 
    End Sub 
    Sub MoveIt() 
     Dim rand As Short 
     Randomize() 
     rand = (Rnd() * 5) 
     Select Case rand 
      Case 0 
       'move button up 5px 
       Button1.Top -= 5 
      Case 1 
       'move button up 5px 
       Button1.Top -= 5 
      Case 2 
       'move button left 5px 
       Button1.Left -= 5 
      Case 3 
       'move button right 5px 
       Button1.Left += 5 
      Case 4 
       'move button down 5px 
       Button1.Top += 5 
      Case 5 
       'move button down 5px 
       Button1.Top += 5 
     End Select 
    End Sub 
End Class   

回答

2

是的,你的代码与此有关。您的表单的Load事件中有一个无尽的While循环,这意味着Load事件永不返回,这意味着您的表单基本上从不会完成加载。

,而不是从你的Load事件调用这个的,通过使用BeginInvokeLoad事件触发随机按钮运动过程的开始:

http://msdn.microsoft.com/en-us/library/a06c0dc2.aspx

0

如果是在调试模式下,将不会在任务管理器中成为exe。

对于形式问题,美国可以把断点和调试慢慢..

尽量把form1 load下面initialize components

+0

错了;错误。这不会编译。 – SLaks 2011-02-18 03:28:09

1

您无法在WinForms中编写无限循环。

如果你这样做,你的程序永远不会有机会处理消息,所以它不会工作。

相反,你应该使用一个计时器。

0

如果你想移动按钮,你的按钮的渲染或预渲染...使用无限循环上的表格加载是什么让它挂起...