.NET環境下TextBox和RichTextBox透明背景色

來源:互聯網
上載者:User

 

文字框控制項不支援透明的背景色

    .NET環境下TextBox和RichTextBox是不支援透明背景色的。當我們在屬性設計器中將它們的BackColor設定為Transparent時,會彈出一個警告視窗“屬性值無效:控制項不支援透明的背景色”。

    在網上一搜,有很多解決辦法:

    (1)在代碼中加入以下代碼:textBox1.BackColor = System.Drawing.Color.Transparent;

    (2)通過繼承TextBox進行簡單設定樣式ControlStyles.SupportsTransparentBackColor。

public class MyTextBox : TextBox
{
    public MyTextBox()
    {
        this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
    }
}

    (3)如果不想自己做控制項,提供一個比較喪心病狂的思路:

1. 建立一個表單,無邊框,TrancsparencyKey設定為跟TextBox一樣;
2. 表單上放一個TextBox,Dock屬性設定為fill;
3. 在主表單上放置一個Label,設定成透明;
4. 滑鼠點擊Label時,將自己做的表單show出來,並且將label隱藏;
5. 焦點離開TextBox時,將TextBox的內容複寫給Label。關閉無框表單,顯示label;
6. 其他細節就自己琢磨吧,比如滑鼠外觀啦,Tab鍵控制焦點移動啦之類。

 

    分析:

    方法(1):不可行。雖然編譯能過,但會遇到執行階段錯誤。因為WinForm不支援該控制項的透明背景色。

    方法(2):不可行。雖然通過設定樣式SupportsTransparentBackColor為真之後能夠使文字框的背景色

             設定為Transparent,但是卻達不到透明效果,背景色仍然不是透明的。

    方法(3):可行但卻複雜。不是最佳方案,只能說是如果沒有其他方案的情況下才使用該方法。

 

總結

    由於.NET架構本身對文字框控制項背景色的支援不太好,所以必須使用一些更底層的WIN32函數才能解決。下面是從The Code Project上找到的一些好的實現方式,基本上都是使用底層WIN32函數解決的,具體的代碼剖析留到後面有時間再做,現在可以直接方便的使用就行。

    這有一篇專門講怎麼使文字框背景透明的文章:How to make a TextBox/RichTextBox transparent

 

開原始檔控制

AlphaBlendTextBox - A transparent/translucent textbox for .NET

 

Alpha Blended (Transparent Capable) TextBox and RichTextBox

 

 

另外:

C#中button透明,無邊線框,但是點擊透明部分能實現它的功能~~~· 謝謝

最佳答案
答:按鈕的FlatStyle屬性改成Flat.加一個button1.BackColor=Color.Transparent;(或者加this.button1.FlatStyle=FlatStyle.Flat;button1.BackColor=Color.Transparent;
2010-12-23 11:57 dedtfo
| 六級
是Web的話就用ImageButton;是WinForm的話用pictureBox之後加onclick事件,我試過可以。用button的話,在無邊框的狀態下也能看的出一點點。當然用圖片的話完全可以用透明的圖片,你可以用PS匯出,我試了完全可以。希望對您有一點點協助。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.