2011-02-18 55 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

如果你想移動按鈕,你的按鈕的渲染或預渲染...使用無限循環上的表格加載是什麼讓它掛起...