Удалить исходное поведение событий WinForm Control - PullRequest
1 голос
/ 07 сентября 2011

Я хотел бы удалить исходное поведение элементов управления в форме (аналогично режиму разработки). Поэтому, когда пользователь нажимает кнопку, я хочу только зафиксировать это событие. Я не хочу, чтобы исходное событие кнопки было запущено. Это как-то возможно? Я ищу общее решение. Поэтому он должен работать с любой формой и любым элементом управления внутри формы.

Причина: я написал конструктор правил проверки формы. Он использует отражение для перечисления всех типов форм в сборке ввода. Затем пользователь может выбрать тип формы, дизайнер создает эту форму, перечисляет элементы управления и встраивает форму в панель дизайнера. Если щелкнуть элемент управления, откроется панель конструктора формул, и теперь пользователь может создать формуляры для этого элемента управления и сохранить формуляры в БД. Когда форма открывается в обычном режиме времени выполнения, она загружает свои проверочные бланки.

Ответы [ 2 ]

3 голосов
/ 07 сентября 2011

События фактически не отключены в конструкторе Winforms. Конструктор выполняет конструктор формы через Reflection, все в методе InitializeComponent () выполняется, включая подписки на события. Везде, где это может вызвать проблему, элементы управления проверяют свойство DesignMode (например, предотвращает запуск таймера) или с помощью пользовательских дизайнеров. Форма отображается под прозрачным многослойным окном, поверх которого нарисованы прямоугольник выделения и маркеры перетаскивания. Что предотвращает проблемы с щелчками мыши и фокусом клавиатуры.

Возможно, вам стоит взглянуть на эту журнальную статью , чтобы это сработало для вас.

0 голосов
/ 07 сентября 2011

Насколько я понимаю из вашего вопроса, я думаю, вы все еще можете использовать свойство "DesignMode" и для этого. В вашей процедуре обработки событий вы можете обойти выполнение, установив следующее свойство:

        if (this.DesignMode) return;

как первый оператор в вашем блоке обработки событий.

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