【发布时间】:2015-02-10 12:08:42
【问题描述】:
我想扩展一个 System.Windows.Forms.Panel(只是继承)并使用自定义 ControlDesigner。 我使用了一个非常简约的 ControlDesigner 实现,只是覆盖了 GetHitTest。 问题是我的自定义面板实例还没有准备好包含子控件。 我玩了一点 AssociatedComponents 但没有效果。删除自定义设计器属性,效果很好。 有人可以帮我指出什么问题吗???
[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;
}
【问题讨论】:
-
请发布您遇到问题的代码示例...
-
不是特定的代码行是问题所在。但我改变了我的帖子。顺便说一句,我对 stackoverflow 代码编辑器有很多问题。真是个野兽!
标签: windows forms controls components designer