C#中TextBox水印提示的簡單實現


網上的實現方案基本上都是類似的,自己寫一個類來繼承TextBox,添加一個LabelTextBox中,

如這篇 http://blog.csdn.net/sqshine/article/details/3648965

對於我僅需要兩個TextBox有提示信息或者說登陸界面中僅一個Combobox和一個TextBox需要提示信息的情況來說,總感覺有點小題大做,而且界面已經畫好了,不願再動的懶人來說,這太麻煩

於是下面是我簡單的實現,符合我的要求,請大牛們不喜勿噴

  • 界面上放一個Combobox和一個TextBox,name分別為cbUsertbPwd
  • cbUsertbPwd上再分別放一個Label,name分別為labelUserlabelPwd,Text為輸入用戶名輸入密碼
  • 在LoginForm.cs中添加一個事件處理方法

    private void textChanged(object sender, EventArgs e)
    {
        if (sender.Equals(cbUser))
        {
            labelUser.Visible = cbUser.Text.Length < 1;
        }
        else if (sender.Equals(tbPwd))
        {
            labelPwd.Visible = tbPwd.Text.Length < 1;
        }
    }
  • 最后,將cbUsertbPwdTextChanged事件設置為上面的textChanged方法

完工!!

這樣得到的效果是:

  • 登陸界面輸入框內容為空時,有上述截圖中的提示效果(label可見)
  • 只要登陸界面輸入框中有輸入字符,就不會出現提示(label不可見)

 


 感謝情若天_RunUp的提醒,上面的實現存在一個問題,鼠標如果點中的如果是label的部分,那么焦點是不在textbox里面的,可能會帶來誤解,看來還是上面提到的類繼承`TextBox`來實現的方式比較通用。


下面本文的一個補救措施,兩個Label的Click事件處理,已經違背了簡單原則了,-_-b

        private void label_Click(object sender, EventArgs e)
        {
            if (sender.Equals(labelUser))
            {
                cbUser.Focus();
            }
            else if (sender.Equals(labelPwd))
            {
                tbPwd.Focus();
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM