Следующий код является простым примером, представляющим мою проблему:
public class MyBase : Component
{
private int _Value;
public int Value
{
get
{
return this._Value;
}
set
{
this._Value = value;
if (ValueChanged != null)
{
ValueChanged(this, new EventArgs());
}
}
}
public event EventHandler ValueChanged;
}
public class MyVisu : Control
{
public MyBase Base { get; set; }
}
Оба, MyBase и MyVisu, должны иметь возможность использоваться в качестве компонента в конструкторе форм во время разработки.Это работает до сих пор.Если я добавляю экземпляр MyBase () в тестовую форму через конструктор и обрабатываю его событие ValueChanged, все работает нормально.
Проблема возникает, когда я добавляю в форму экземпляр MyVisu ().Если я пытаюсь обработать событие MyVisuInstance.MyBase.ValueChanged через конструктор, появляется следующее сообщение об ошибке:
Невозможно установить события для объекта, переданного службе привязки событий, поскольку сайт связан собъект не может быть найден.
Мне нужно, чтобы это событие было видно в конструкторе только при добавлении экземпляра MyBase.Мне не нужно, чтобы это событие было видно на конструкторе в случае добавления экземпляра MyVisu.Итак, есть ли возможность в этом случае скрыть это событие в конструкторе в режиме конструктора?
Я знаю, что мог бы контролировать видимость, либо реализовав интерфейс ICustomTypeDescriptor, либо реализовав собственный TypeConverter.К сожалению, это повлияет на оба события (в MyBase и в MyVisu).
Кстати, другой вариант, конечно, будет то, что кто-то может сказать мне, как избежать сообщения об ошибке.; -)