如何在设计器中单击usercontrols子项?

时间:2011-10-14 02:11:06

标签: c# vb.net winforms visual-studio visual-studio-2008

我在创建自定义控件时遇到了一些麻烦。

我所拥有的是用户控件中的列表框,我需要能够在设计器中点击列表项。这会使它的行为与tabcontrol非常相似。

我没有处理过很多用户控件,但是我尝试了一些没有成功的事件。

    protected override void OnClick(EventArgs e)
    {
        if (DesignMode)
        {
            InvokeOnClick(listBox1, e);
        }
        base.OnClick(e);
    }

我无法在网上找到任何内容..有关如何做到这一点的任何想法?

提前致谢=)

3 个答案:

答案 0 :(得分:2)

@Bradley:谢谢你指出我正确的方向

您需要编写一个ControlDesigner类,然后在UserControl的[Designer( ... )]属性中使用它。

请参阅此处的示例: http://msdn.microsoft.com/en-us/library/sycctd1z(v=VS.90).aspx

对于实际点击:

http://msdn.microsoft.com/en-us/library/system.windows.forms.design.controldesigner.gethittest(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在设计模式下的表现如何。