设计期间的火灾事件

本文关键字:火灾 事件 | 更新日期: 2023-09-27 18:25:31

我目前正在设计一个从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();
    }
}

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

设计期间的火灾事件

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

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

以下内容应该有效:

  • 创建一个Windows窗体项目来托管您的自定义控件

  • 创建控制库项目

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

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

  • 设置设计时调试项目

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

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