Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Разработка контрола


Автор: senalex 5.6.2009, 12:56
Всем привет, пишу контрол, потомок UserControl, на него положил TreeView и открыл доступ через свойство, теперь при использовании своего контрола хочу подписаться на событие дерева и получаю сообщение: 

Events cannot be set on the object passed to the event binding service because a site associated with the object could not be located.

Кто сталкивался? как быть?

Автор: suvorov 7.6.2009, 17:09
Цитата(senalex @  5.6.2009,  12:56 Найти цитируемый пост)
подписаться на событие дерева


А на какое событие вы подписываетесь (это важно, потому что есть события, которые отвечают за binding, привязку данных)?


Цитата(senalex @  5.6.2009,  12:56 Найти цитируемый пост)
Events cannot be set on the object passed to the event binding service because a site associated with the object could not be located.


Вылетает exception?

Автор: senalex 8.6.2009, 06:32
Цитата(suvorov @  7.6.2009,  17:09 Найти цитируемый пост)
А на какое событие вы подписываетесь (это важно, потому что есть события, которые отвечают за binding, привязку данных)?

Подписаться пытаюсь на событие AfterSelect, но пробывал и на другие тоже самое.

Цитата(suvorov @  7.6.2009,  17:09 Найти цитируемый пост)
Вылетает exception?

Вылетает обработанное исключение, т.е. основное сообщение такое: Property value is not valid
А при нажатии по кнопке Details выше указанное.



Автор: senalex 10.6.2009, 06:39
Выход найден, вот рабочий код:

        [Description("Объект TreeView")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        [TypeConverter(typeof(TreeView))]
        [MergableProperty(false)]
        public TreeView Tree
        {
            get { return tree; }
            set { tree = value; }
        }
        public override ISite Site
        {
            get
            {
                return base.Site;
            }
            set
            {
                base.Site = value;
                if (value != null)
                {
                    INestedContainer nc = (INestedContainer)Site.GetService(typeof(INestedContainer));
                    if (nc != null)
                    {
                        nc.Add(tree, "Tree");
                    }
                }
            }
        }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)