C# WinForm控制項美化擴充系列之給TextBox加浮水印

來源:互聯網
上載者:User

標籤:

在一些軟體中,我們看到當一個輸入控制項(textbox)沒有輸入而且沒有焦點的時候,會顯示一些提示資訊,網上有一些介紹用複合控制項來實現,其實我們直接繼承textbox控制項也很容易實現。

下面就介紹怎樣來實現這個控制項。

第一步:我們建一個繼承 textbox 的類,命名為watermaktextbox。

第二步:給這個類添加兩個屬性,一個是emptytexttip,就是當控制項沒有輸入內容和沒有焦點的時候顯示的提示文本,也就是浮水印了;另一個是emptytexttipcolor,就是提示文本的顏色。

第三步:也就是最重要的一步,就是重寫wndproc 函數,截取wm_paint訊息,當沒有輸入內容和輸入焦點時,重繪textbox,看下面的代碼:

protected override void wndproc(ref message m){    base.wndproc(ref m);    if (m.msg == wm_paint)    {        wmpaint(ref m);    }} private void wmpaint(ref message m){    rectangle rectangle = new rectangle(0, 0, width, height);    using (graphics graphics = graphics.fromhwnd(base.handle))    {        if (text.length == 0           && !string.isnullorempty(_emptytexttip)           && !focused)        {           textformatflags format =                textformatflags.endellipsis |                textformatflags.verticalcenter;             if (righttoleft == righttoleft.yes)            {                format |= textformatflags.righttoleft | textformatflags.right;            }             textrenderer.drawtext(                graphics,                _emptytexttip,                font,                base.clientrectangle,                _emptytexttipcolor,                  format);          }       }

 

C# WinForm控制項美化擴充系列之給TextBox加浮水印

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.