使控制元件產生透明背景(不同於MSDN的方法)
阿新 • • 發佈:2019-01-10
今天搞了一天終於搞定
是這樣的,我寫了一個自定義的控制元件然後設定為背景透明,然後用Control.Add()方法新增到一個已有的控制元件,2個以內沒問題,當超過兩個後就會提示建立控制代碼錯誤,鬱悶到死,怎麼搞就是搞不好,MSDN提供的方法如下:
-
定位控制元件類的建構函式。
-
在建構函式中呼叫窗體的 SetStyle。
Visual Basic 複製程式碼SetStyle(ControlStyles.SupportsTransparentBackColor, True)
C# 複製程式碼SetStyle(ControlStyles.SupportsTransparentBackColor, true
J# 複製程式碼SetStyle(ControlStyles.SupportsTransparentBackColor, true);
這將使控制元件能夠支援透明背景色。
-
在步驟 1 中新增的程式碼行下再新增下面的程式碼行。這會將控制元件的 BackColor 設定為 Transparent。
Visual Basic 複製程式碼Me.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;
目前暫不知道為什麼要這樣設定
希望對您有用,多謝閱讀!