使控件產生透明背景(不同於MSDN的方法)

今天搞了一天終於搞定

是這樣的,我寫了一個自定義的控件然後設置爲背景透明,然後用Control.Add()方法添加到一個已有的控件,2個以內沒問題,當超過兩個後就會提示創建句柄錯誤,鬱悶到死,怎麼搞就是搞不好,MSDN提供的方法如下:

  1. 定位控件類的構造函數。

  2. 在構造函數中調用窗體的 SetStyle

    Visual Basic
    SetStyle(ControlStyles.SupportsTransparentBackColor, True)

     

    SetStyle(ControlStyles.SupportsTransparentBackColor, true);

     

    SetStyle(ControlStyles.SupportsTransparentBackColor, true);

    這將使控件能夠支持透明背景色。

  3. 在步驟 1 中添加的代碼行下再添加下面的代碼行。這會將控件的 BackColor 設置爲 Transparent

    Visual Basic
    Me.BackColor = Color.Transparent

     

    this.BackColor = Color.Transparent;

     

    this.set_BackColor(Color.get_Transparent());

    注意,也可以通過使用 FromArgb 方法創建半透明顏色。有關顏色的更多信息,請參見 使用託管圖形類

    但是這是無濟於事的,因爲當我動態添加超過3個這樣的自定義控件後就會報創建句柄錯誤。鬱悶

終於有幸在網上看到一篇文章

其SetStyle函數裏面的參數要這樣設置纔行:

            SetStyle(ControlStyles.SupportsTransparentBackColor
                | ControlStyles.UserPaint
                | ControlStyles.AllPaintingInWmPaint
                | ControlStyles.Opaque, true);
            BackColor = Color.Transparent;

目前暫不知道爲什麼要這樣設置

希望對您有用,多謝閱讀!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章