簡體   English   中英

設計期間的火災事件?

[英]Fire events during design-time?

我目前正在設計一個自定義選項卡控件類,它派生自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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM