我在创建自定义控件时遇到了一些麻烦。
我所拥有的是用户控件中的列表框,我需要能够在设计器中点击列表项。这会使它的行为与tabcontrol非常相似。
我没有处理过很多用户控件,但是我尝试了一些没有成功的事件。
protected override void OnClick(EventArgs e)
{
if (DesignMode)
{
InvokeOnClick(listBox1, e);
}
base.OnClick(e);
}
我无法在网上找到任何内容..有关如何做到这一点的任何想法?
提前致谢=)
答案 0 :(得分:2)
@Bradley:谢谢你指出我正确的方向
您需要编写一个ControlDesigner类,然后在UserControl的[Designer( ... )]
属性中使用它。
请参阅此处的示例: http://msdn.microsoft.com/en-us/library/sycctd1z(v=VS.90).aspx
对于实际点击:
ControlDesigner具有protected bool GetHitTest(Point point)
方法 - 您可以在ControlDesigner中实现此方法,并根据屏幕上的点击位置,在您希望控件处理点击时返回true
。
答案 1 :(得分:1)
我发现这个链接说你需要实现一个自定义设计器来获得所需的行为,并解释如何实现它。
http://social.msdn.microsoft.com/Forums/pl-PL/winforms/thread/0b6ed0cb-907c-4733-b245-ae5d0b0e6606
答案 2 :(得分:0)
您可以在自定义控件中捕获MouseDown事件并将其转发到内部控件。我不确定MouseDown在设计模式下的表现如何。