2014-12-15 2 views
4

При запуске программы мне нужно видеть каждый раз, когда определенная кнопка отключена, и пройдите через код в этой точке.Могу ли я установить условие точки останова по всей форме?

Если я установил точку останова с условием (например: только при нажатии button1.enabled = false), он попадет только в этом конкретном месте.

Можно ли установить точку останова для всей программы, чтобы я мог видеть, когда условие изменяется во многих формах и местоположениях?

+0

Не уверен, что глобальный способ сделать это, но вы можете правой кнопкой мыши на Button1 в коде и выберите «Найти все ссылки». Затем вы можете использовать этот список, чтобы найти все строки кода, которые вас интересуют, и соответственно установить точки останова. –

ответ

4

Вы не можете установить одну точку останова и применить ее к каждой строке файла, но вы можете установить точку останова на установщике Enabled, а затем отфильтровать ее до определенного условия фильтра. Это даст вам желаемый результат. (Обратите внимание, что вам может потребоваться отключить «Только мой код», см. this question for more info)

Установить точку останова с помощью функции «Новая точка останова при работе» as described here, хотя в Visual Studio 2013 мне, похоже, нужно использовать несколько другую обозначения:

enter image description here

Затем установите контрольную точку в Funtion:

System.Windows.Forms.Control.Enabled 

в C# или VB.NET для:

System.Windows.Forms.Control.set_Enabled(bool) 

(Вы, кажется, нужно использовать класс, который фактически определяет свойство, которое в случае Button класса Enabled собственности, является Control класса Button наследует от.

Игнорировать предупреждение о том, что он не может найти функцию (она делает это для свойств каким-то образом), или снимите флажок поиска Intellisense.

Теперь посмотрим вверх контрольную точку в списке точек останова и настроить условие так ломает правой клавишей

enter image description here

Используйте Name свойство (или любого другого фильтра, что делает точку останова уникальным) для запуска когда вам это нужно:

enter image description here

когда он ломается, он сломается в источниках контроля (если у вас есть Framework Source S tepping), что может сбить с толку. Используйте окно «Трассировка стека», чтобы найти место, где был вызван метод.

enter image description here

Другой способ установки точки останова через окно StackTrace. Установите точку останова на любой строке, на которой есть ваша собственность. Запустите отладчик и перейдите на эту строку, теперь используйте «Step into Specific», чтобы войти в свойство, которое вы хотите разбить.

enter image description here

Используйте окно «Стек», чтобы создать контрольную точку для вас:

enter image description here

+0

После всех этих лет я только что узнал об этом! –

+0

Отлично, но не уверен, что поставить в условие точки останова, пока у меня есть: «this.btnReish.Enabled = false» в состоянии, но не попадание – Dman

+0

На основании его примера вам понадобится 'this.Name == "btnReish" '. –

0

Так как в вашем случае, если вы хотите разбить на функции из рамок Microsoft .NET , есть другой способ. Enabled Framework Source Stepping.

Откройте параметры Visual Studio Debugger и включите «Исходный шаблон Framework» и отключите «Just My Code». enter image description here

Затем включите серверы Microsoft Symbol Servers в соответствии с инструкциями. Теперь загрузите приложение под отладчиком и дождитесь загрузки файлов символов. enter image description here

установить точку останова в любом месте вашего кода, который каким-то образом связано с System.Windows.Forms (конструкторе MainForm, например) и щелкните правой кнопкой мыши любую функцию из сборки «System.Windows.Forms», чтобы загрузить символы для этой сборки. Это позволит вам войти в свойство «Включено» и установить там точку останова. enter image description here enter image description here

Полное руководство можно найти здесь: http://blogs.msdn.com/b/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx

Смежные вопросы