Скрыть дочерние элементы управления в UserControl с другим элементом управления - PullRequest
0 голосов
/ 21 декабря 2011

Я пишу пользовательский элемент управления, полученный из UserControl . В нем есть некоторые элементы управления, которые я хочу предотвратить (некоторые текстовые поля, выпадающие списки). Они становятся доступными для взаимодействия только тогда, когда пользователь нажимает кнопку «Редактировать».

Я читал о KeyPreview , но он доступен только для форм. Я нахожу перенаправление всех событий в общий обработчик, который проверяет, включен ли режим редактирования слишком много хлопот.

Есть ли способ поместить другой прозрачный элемент управления поверх остальных (по порядку Z), который будет перехватывать все события мыши и нажатия клавиш, но нормально отображает элементы управления? Или, может быть, есть другое решение?

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

1 Ответ

2 голосов
/ 21 декабря 2011

Вы можете записать свое свойство Enabled в свой UserControl и использовать его.

private new bool Enabled
        {
            get { return _enabled; }
            set
            {
                foreach (System.Windows.Forms.Control c in this.Controls)
                {
                    if (c is SomeTypeThatShouldBeExcluded)
                        continue;
                    c.Enabled = value;
                }
                _enabled = value;
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...