设计期间的火灾事件?

时间:2012-02-22 16:52:53

标签: c# events controls designer

我目前正在设计一个自定义选项卡控件类,它派生自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();
    }

}

您会看到按钮的颜色在设计时没有变化。

2 个答案:

答案 0 :(得分:4)

这需要一些工作 - 设计时间交互与运行时分开。这可能会有所帮助:

http://www.codeproject.com/Articles/13531/Targeting-Design-Time-Events-of-User-Controls

答案 1 :(得分:3)

以下应该有效:

  • 创建Windows窗体项目以托管自定义控件

  • 创建控件库项目

  • 将属性添加到自定义控件

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

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

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

http://msdn.microsoft.com/en-us/library/5ytx0z24(v=vs.90).aspx

的更多信息