设计时触发事件?

4
我正在设计一个自定义选项卡控件类,该类派生自System.Windows.Forms.Control。问题在于,在设计时没有任何事件被触发(至少我测试过的没有,包括鼠标和键盘事件)。这对我来说是个问题,因为用户无法在设计器中切换选项卡页,这相当不方便。我做了一些研究,似乎我想要实现的目标是不可能的。这让我想到,很多随着.NET框架提供的控件都支持设计器交互。以TabControl为例,您可以在设计时轻松地在其页面之间切换。
所以我的问题是:有没有办法使设计时的鼠标和键盘事件正常工作?
另外,抱歉我没有提供代码片段。但我认为这并不是必要的。对于那些想尝试的人,这里有一个我快速创建的简单按钮类:
public class MyButton : Control
{

    private bool hover = false;

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        Color color = hover ? Color.DarkBlue : Color.Blue;
        e.Graphics.FillRectangle(new SolidBrush(color), DisplayRectangle);
        e.Graphics.DrawRectangle(Pens.Black, new Rectangle(DisplayRectangle.Location, new Size(DisplayRectangle.Width - 1, DisplayRectangle.Height - 1)));
    }

    protected override void OnMouseEnter(EventArgs e)
    {
        base.OnMouseEnter(e);

        hover = true;
        Refresh();
    }

    protected override void OnMouseLeave(EventArgs e)
    {
        base.OnMouseLeave(e);

        hover = false;
        Refresh();
    }

}

在设计时,您会发现按钮的颜色没有改变。


我真的不确定应该接受哪个答案,但我选择了Massimiliano Peluso的答案,因为他链接的网站包含了大量有关创建控件的信息。 - haiyyu
2个回答

4

3
以下内容应该有效:
  • 创建一个Windows Forms项目来托管你的自定义控件

  • 创建一个控件库项目

  • 向你的自定义控件添加属性

  • 将你的自定义控件添加到主机表单中

  • 设置项目进行设计时调试

  • 在设计时调试你的自定义控件

更多信息请参见http://msdn.microsoft.com/en-us/library/5ytx0z24(v=vs.90).aspx


哦,你编辑了你的回答。谢谢,我会看一下的! - haiyyu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接