Я хочу расширить System.Windows.Forms.Panel (просто наследовать) и использовать пользовательский ControlDesigner. Я использую очень минималистичную реализацию ControlDesigner, просто перезаписываю GetHitTest. Проблема заключается в том, что мой пользовательский экземпляр панели еще не готов содержать дочерние элементы управления. Я немного играю с AssociatedComponents, но без эффекта. Удалите пользовательский атрибут дизайнера, и он отлично работает. может кто-нибудь помочь мне указать, что случилось? ???Почему моя настраиваемая панель управления Windows Forms не поддерживает дочерние элементы управления?
[Designer(typeof(MyPanelDesigner)), ToolboxItem(true)] public class MyPanel : System.Windows.Forms.Panel { // empty except for OnPaint }
internal class DrawPanelDesigner : ControlDesigner
{
private MyPanel ParentControl
{
get
{
return Control as MyPanel;
}
}
public override System.Collections.ICollection AssociatedComponents
{
get
{
return ParentControl.Controls;
}
}
protected override bool GetHitTest(System.Drawing.Point point)
{
// hit detection for some owner drawed items in OnPaint
point = ParentControl.PointToClient(point);
var item = ParentControl.View.GetItemFromViewPoint(point.X, point.Y, true);
return null != item;
}
Пожалуйста отправьте образец кода, который вы испытываете проблемы с ... –
не конкретная строка кода является проблемой. но я изменил свое сообщение. btw У меня много проблем с редактором кода stackoverflow. какой зверь! – IDisposable