我目前正在設計一個派生自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 2012-02-22 17:29:01