VB.NET - Ctrl + Break приостанавливает код в "Partial Class frmMain" - PullRequest
1 голос
/ 01 февраля 2012

Это вопрос IDE для Visual Basic 2008 Express Edition.Это может быть ошибка в IDE, или, может быть, это моя вина, как-то?

Моя основная форма называется frmMain, и в свойствах моего приложения я установил frmMain в качестве объекта запуска.Все это похоже на то, что делают многие разработчики программного обеспечения.

Но во время отладки я нажимаю Ctrl + Break , как это делалось годами, и в IDE я получаю поведение, которого не ожидал.После этого я получаю зеленый фоновый текст и зеленую стрелку, указывающую во всплывающей подсказке:

Это следующий оператор, который будет выполнен, когда этот поток вернется из текущей функции.

Даже если у меня не было открытого документа дизайнера, он автоматически открывает frmMain.Designer.vb в редакторе и строка hihglights зеленого цвета.Строка, конечно: Partial Class frmMain, которая является строкой 2 файла.(Да, он выделяет вторую строку сгенерированного дизайнером кода.)

frmMain, кажется, полностью загружен, и это мой объект запуска.Насколько я знаю, не должно быть «следующего оператора для выполнения» вообще, потому что код должен быть бездействующим.Я не хочу видеть документ Designer.vb ... Я хочу редактировать свой собственный код.

Что вызывает это?Несмотря на то, что моя форма ведет себя очень хорошо, может быть какой-то незаконченный аспект загрузки формы такой, что она «не возвращается» из функции?

Enter image description here Enter image description here Enter image description here

Ответы [ 3 ]

0 голосов
/ 02 февраля 2012

Компилятор Visual Basic добавит точку входа в вашу форму. Точкой входа является стандартная функция main или «shared sub main», которая в свою очередь содержит код «application.run (новая форма)». Поскольку это код, сгенерированный компилятором, расположение источника отсутствует, поэтому редактор Visual Basic выделяет определение класса.

Ключ к этому находится в стеке вызовов. Обратите внимание на Main().

Shared Sub Main()
    Application.Run(new frmMain)
End Sub
0 голосов
/ 03 февраля 2012

Я нашел ответ самостоятельно:

Я установил флажок «Включить каркас приложения» в свойствах решения, и все хорошо!

Я считаю, что эта проблема возникла, когда я былработая над экспериментальным кодом, в котором я хотел сделать Sub Main моим объектом запуска.Я снял этот флажок, потому что для этого необходимо использовать Sub Main.

Когда эксперимент не удался, я сбросил объект запуска обратно в frmMain, и мое приложение работало нормально.Однако я не проверил флажок.Я не заметил изменения в поведении IDE в течение нескольких дней (когда мне нужно было более стандартное поведение), поэтому я не наблюдал какой-либо корреляции.

Хотя установка этого флажка, безусловно, является решением, оно все еще не совсемдля меня ясно, что, черт возьми, эта коробка на самом деле делает, кроме того, что я трачу много времени на StackOverflow.com!; -)

Для тех, кто сталкивается с подобной ситуацией, я теперь совершенно уверен, что мои настройки не были повреждены, и если вы используете Express Edition, пожалуйста, не вводите в заблуждение документацией MS, котораяможет заставить вас поверить, что это опция «Просто мой код».Эту опцию нельзя изменить в версиях Express.(Но это не потому, что вы не можете включить его - это потому, что вы не можете выключить его в Express!)

Спасибо всем за ваши усилия.

0 голосов
/ 01 февраля 2012

Я собираюсь предположить, что он пытается показать вам эквивалент:

Application.Run(new frmMain)

Это код, который генерируется для запуска вашей формы.Но в VB.NET этот код похоронен.Создайте функцию Main() и измените тип запуска на этот с этой строкой и повторите процесс.Вы увидите выделение Application.Run.Это метод, который содержит ваш цикл обработки сообщений Windows.

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