2012-02-22 108 views
3

我目前正在設計一個派生自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(); 
    } 

} 

您將看到按鈕的顏色是不是在設計時改變。

+0

我真的不確定接受哪個答案,但我選擇了Massimiliano Peluso作爲他鏈接的網站,其中包含大量信息創建控件。 – haiyyu 2012-02-22 17:29:01

回答

3

下應該工作:

更多信息

+0

哦,你已經編輯了你的答案。謝謝,我會看看這個! – haiyyu 2012-02-22 17:05:45

+2

我編輯了我的答案 – 2012-02-22 17:07:26