Пример #1
0
        /// <summary>
        /// Устанавливает обработчик OnClick для control и всех его дочерних элементов.
        /// Применяю для визуального выделения объекта.
        /// </summary>
        /// <param name="control"></param>
        public static void SetOnDoubleClickHandlerForAllElementsInControl(Control control, EventHandler handler)
        {
            var allControls = HelperControls.GetAllChildrenControls(control);

            foreach (var itemControl in allControls)
            {
                itemControl.DoubleClick -= handler;
                itemControl.DoubleClick += handler;
            }
        }
Пример #2
0
        //Todo Можно сделать еще отдельным параметром (на какое событие подписываемся: Click, Load, ect...)
        /// <summary>
        /// Устанавливает обработчик OnMouseEnter для control и всех его дочерних элементов.
        /// </summary>
        /// <param name="control"></param>
        public static void SetOnMouseEnterHandlerForAllElementsInControl(Control control, EventHandler handler)
        {
            var allControls = HelperControls.GetAllChildrenControls(control);

            foreach (var itemControl in allControls)
            {
                itemControl.MouseEnter -= handler;
                itemControl.MouseEnter += handler;
            }
        }
Пример #3
0
        /// <summary>
        /// Метод для получения всех контролов внутри элемента
        /// Проходим рекурсивно и возвращаем все имеющиеся контролы
        /// Использую метод для последующей привязки обработчика события
        /// Нужно для выделения элемента при нажатии мышки на любой контрол внутри основного
        /// </summary>
        /// <param name="parentControl"></param>
        /// <returns></returns>
        public static IEnumerable <Control> GetAllChildrenControls(Control parentControl)
        {
            var parentControls = parentControl?.Controls.Cast <Control>();

            foreach (Control item in parentControl?.Controls)
            {
                if (item.HasChildren)
                {
                    var itemControls = HelperControls.GetAllChildrenControls(item);

                    if (itemControls == null || itemControls.Count() == 0)
                    {
                        continue;
                    }

                    parentControls = parentControls?.Concat(itemControls);
                }
            }

            return(parentControls);
        }