解決winfrom下TextBox不支援透明背景色
阿新 • • 發佈:2019-02-10
不知道微軟扯什麼拉雞蛋子,居然有控制元件不支援透明,我實在想噴設計的人腦殘。尤其可恨的是TextBox不支援,更可恨的是直到最新版.net4.6也不支援。原始碼又看不見,具體實現細節都不知道,誰能改得動?這也難怪C#會被java大軍淹沒。不是C#不好,是很多細節沒到位。
解決方案一:
重寫一個TextBox:
public class TransTextBox : TextBox { [DllImport("kernel32.dll", CharSet = CharSet.Auto)] static extern IntPtr LoadLibrary(string lpFileName); protected override CreateParams CreateParams { get { CreateParams prams = base.CreateParams; if (LoadLibrary("msftedit.dll") != IntPtr.Zero) { prams.ExStyle |= 0x020; prams.ClassName = "RICHEDIT50W"; } return prams; } } }
為什麼可以,我不知道,我只是程式碼的搬運工。然而,這個方案是有所缺陷的。
如果你是大神,可以自己定義出一個全新的TextBox。然後以下就是兩種開源的透明的TextBox控制元件:
需要賬號才能下載。可以用github授權登陸。
解決方案二:
AlphaBlendTextBox - A transparent/translucent textbox for .NET:
解決方案三:
Alpha Blended (Transparent Capable) TextBox and RichTextBox:
最後就是,看清楚,看清楚是winfrom,不是別的。網上那什麼:
this.SetStyle(ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint, true);
或者直接設定:
base.BackColor = Color.Transparent;
臥槽,尼們測試過嗎》》》瞎扯得蛋疼。
還有利用form透明來設定的,那麼多年了,程式碼在哪裡?一個實現都沒有。也是瞎搞,不實際的方案。
——end