zoukankan      html  css  js  c++  java
  • 转自:C#中TextBox水印提示的简单实现

    本文转自:
    原作者: js2854
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    例:

    网上的实现方案基本上都是类似的,自己写一个类来继承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();
                }
            }
     
  • 相关阅读:
    suseoj 1211: 子集和问题 (dfs)
    suseoj 1210: 会场安排问题 (贪心)
    suseoj 1209: 独立任务最优调度问题(动态规划)
    四级词汇(二)
    四级单词(一)
    nyoj 84-阶乘的0 (规律题)
    nyoj 83-迷宫寻宝(二) (计算几何, 叉积)
    nyoj 82-迷宫寻宝(一) (多重BFS)
    nyoj 79-拦截导弹 (动态规划)
    nyoj 78-圈水池 (凸包)
  • 原文地址:https://www.cnblogs.com/candyzhmm/p/5758027.html
Copyright © 2011-2022 走看看