У меня есть класс «ControlMonitor», который предназначен для прослушивания событий, которые происходят в форме.Это работает так: я передаю форму, которую хочу отслеживать, в экземпляр этого класса, а затем класс перебирает все элементы управления формы и регистрирует их «соответствующие» события.Например, если элементом управления является TextBox, я регистрируюсь для TextChanged.Если элемент управления является ComboBox, я регистрируюсь как для SelectedIndexChanged и TextChanged, и так далее.Таким образом, экземпляр «ControlMonitor» может отчитываться о каждом значительном действии, которое пользователь совершил в моей форме, с минимальным вмешательством в сам код формы.
Он отлично работает для создания отчетов по любым элементам управленияв форме, но мне также нужно знать, какие общие диалоговые окна / окна сообщений были запущены в форме и как пользователь ответил на них.Я должен отметить, что более важной целью здесь является автоматизация: мы хотим получить набор повторяющихся шагов, которые можно записать в сценарий, который воспроизводится в инструменте автоматизации.Для этого недостаточно знать, что пользователь нажал «Файл / Открыть»;нам также нужно знать заголовок окна запущенного OpenFileDialog, путь, который выбрал пользователь, и DialogResult.То же самое касается вызовов MessageBox;нам нужно знать заголовок окна и DialogResult.
Кажется, что общие диалоги имеют минимальную поддержку событий (очевидно, что FolderBrowserDialog вообще не имеет событий), и я даже не уверен, с чего начать, когдаречь идет о прослушивании результатов вызова MessageBox.Конечно, я мог бы написать класс-обертку, который инкапсулирует общие диалоги и вызовы MessageBox и передает результаты в экземпляр «ControlMonitor» ... но тогда остальная часть программы должна будет постоянно использовать этот класс-обертку, и первичныйЦель моего класса «ControlMonitor» состоит в том, чтобы вы могли включить его в проект и прослушать одну из форм с минимальным вмешательством в исходный код.
Могу ли я что-нибудь сделать в классе «ControlMonitor»?Мне нужны DialogResults и заголовки окон для всех диалогов / окон сообщений, а также для более сложных диалогов, таких как OpenFileDialog. Мне также нужно знать путь, выбранный пользователем и т. Д. Класс «ControlMonitor» является скомпилированной частью программы, которую он пытается прослушать.к, поэтому он имеет прямой доступ к объекту Form, который передается в него.Я так близко здесь;Я могу контролировать 95% приложений, потому что большинство из них - это просто элементы управления в форме ... Мне также нужен способ контролировать диалоги!