我正在设计一个自定义选项卡控件类,该类派生自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();
}
}
在设计时,您会发现按钮的颜色没有改变。