Проблема Windows Forms в VB.NET - PullRequest
0 голосов
/ 18 февраля 2011

Я делаю очень простое игровое приложение. Основная форма (Form1) имеет одну кнопку с надписью Button1. (очень креативное наименование, да?) Смысл приложения в том, чтобы перемещать кнопку в произвольных направлениях по форме. Моя проблема в том, что когда я начинаю отладку (я использую Visual Studio 2010), форма никогда не появляется, и когда я открываю диспетчер задач Windows, имя моего .exe никогда не появляется в списке процессов. Мне было интересно, если код, который я использую, как-то связано с этим. Вот мой код:

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          

Ответы [ 4 ]

2 голосов
/ 18 февраля 2011

Да, ваш код как-то связан с этим. У вас есть бесконечный цикл While в событии Load вашей формы, что означает, что событие Load никогда не вернется, что означает, что ваша форма в основном никогда не завершает загрузку.

Вместо вызова этого из вашего события Load, инициируйте запуск процесса случайного перемещения кнопок, используя BeginInvoke из вашего события Load:

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

1 голос
/ 18 февраля 2011

Вы не можете написать бесконечный цикл в WinForms.

Если вы это сделаете, ваша программа никогда не получит возможность обрабатывать сообщения, поэтому она не будет работать.

Вместо этого вам следуетиспользуйте таймер.

0 голосов
/ 18 февраля 2011

Если вы хотите переместить кнопку, вы визуализируете или отредактируете кнопку ... Использование бесконечного цикла при загрузке формы - вот что заставляет ее зависать ...

0 голосов
/ 18 февраля 2011

Если он находится в режиме отладки, в диспетчере задач не будет exe.

Для проблемы с формой вы можете поставить точку останова и медленно отлаживать ..

попробуйте поставить form1 load ниже initialize components.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...