今天搞了一天終於搞定
是這樣的,我寫了一個自定義的控件然後設置爲背景透明,然後用Control.Add()方法添加到一個已有的控件,2個以內沒問題,當超過兩個後就會提示創建句柄錯誤,鬱悶到死,怎麼搞就是搞不好,MSDN提供的方法如下:
-
定位控件類的構造函數。
-
在構造函數中調用窗體的 SetStyle。
Visual BasicSetStyle(ControlStyles.SupportsTransparentBackColor, True)
C#SetStyle(ControlStyles.SupportsTransparentBackColor, true);
J#SetStyle(ControlStyles.SupportsTransparentBackColor, true);
這將使控件能夠支持透明背景色。
-
在步驟 1 中添加的代碼行下再添加下面的代碼行。這會將控件的 BackColor 設置爲 Transparent。
Visual BasicMe.BackColor = Color.Transparent
C#this.BackColor = Color.Transparent;
J#this.set_BackColor(Color.get_Transparent());
注意,也可以通過使用 FromArgb 方法創建半透明顏色。有關顏色的更多信息,請參見 使用託管圖形類。
但是這是無濟於事的,因爲當我動態添加超過3個這樣的自定義控件後就會報創建句柄錯誤。鬱悶
終於有幸在網上看到一篇文章
其SetStyle函數裏面的參數要這樣設置纔行:
SetStyle(ControlStyles.SupportsTransparentBackColor
| ControlStyles.UserPaint
| ControlStyles.AllPaintingInWmPaint
| ControlStyles.Opaque, true);
BackColor = Color.Transparent;
目前暫不知道爲什麼要這樣設置
希望對您有用,多謝閱讀!