• 我们熟悉的Textbox


     

     

    创建只读文本框

    • 方法一:
    • 可用Readonly属性防止用户编辑文本框内容。将Readonly属性设置为True后,用户就可以滚动文本框中的文本并将其突出显示,但不能作任何更改。将Readonly属性设置为后,运行时可以在文本框中使用“复制”命令,但不能使用“剪切”和“粘帖”命令。Readonly属性只影响运行时的用户交互。这时仍可变更Text属性,从而在运行时通过程序改变文本框的内容。

     

    • 方法二
    • textbox控件的KeyPress事件下,生成相应的事件监听方法,加入代码e.Handled=true.代码如下:
    • Private Sub textbox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtReturnCash.KeyPress
              e.Handled = True
              MsgBox("此处无需输入数据", vbOKOnly + vbExclamation, "温馨提示")
          End Sub
    • e.Handled=True:从字面上理解,Handle是处理的意思,而加个ed,就表示处理过了。所以当e.Handled为True时,程序认为该KeyPress事件已经被处理过了,文本框的内容自然也就不会发生变化了。


    e.Handled的其他妙用

    • 首先添加好文本框控件TextBox后把属性IMEMode的值改成Disable,这样在该文本框中就不能使用中文输入法了。
    • 文本框只能输入数字和退格键
    • textbox控件的KeyPress事件下,生成相应的事件监听方法,加入代码e.Handled代码如下
    • Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress
          If Char.IsDigit(e.KeyChar) Or e.KeyChar = Chr(8) Then
              e.Handled = False
          Else
              e.Handled = True '事件己处理
          End If
      End Sub
    • ps:  Char.IsDigit(e.KeyChar):是检测按下的键的字符是否是10进制数,也可以用Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57代替。如果考虑小键盘,还需要加入or asc(e.kychar) >= 96 And asc(e.kychar) <= 105 ,因为小键盘上的 0~9 对应的ASCII码是96~105
    • 解释:e.KeyChar:键盘输入键的对应的字符;IsDigit函数:判断是否为0到9的数字;Chr(8):退格键;当e.Handled为True时,程序认为该KeyPress事件已经被处理过了,文本框的内容也就不会发生变化了。
    • 文本框只能输入整数、小数、退格键
    • 如果需要输入小数的话,就需要输入小数点".",而且小数点只能输入一次,此时将上面的函数改为下面的格式:
    • Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress
          If Char.IsDigit(e.KeyChar) or e.KeyChar = Chr(8) or e.KeyChar = "." Then
              If e.KeyChar = "." And InStr(TextBox1.Text, ".") > 0 Then
                  e.Handled = True
              Else
                  e.Handled = False
              End If
          Else
              e.Handled = True
          End If
      End Sub
    • PS:InStr函数:返回指定字符在字符串中的位置,当字符串中不含此字符时,返回一个负数。这时文本框可以用来输入正整数及小数。

     

    • 文本框只能输入整数、小数、负数和退格键
    • 如果需要输入负数的话,就需要输入负号"-",而且只能是文本框输入的第一个字符,此时又可以将上面的函数改为下面的格式:
    •  

      Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress
          If Char.IsDigit(e.KeyChar) Or e.KeyChar = "." Or e.KeyChar = Chr(8) Then
              If e.KeyChar = "." And InStr(TextBox1.Text, ".") > 0 Then
                  e.Handled = True
               Else
                   e.Handled = False
               End If
           ElseIf e.KeyChar = "-" And TextBox1.Text = "" Then
               e.Handled = False
           Else
               e.Handled = True
           End If
      End Sub
    • 给多个文本框做输入限制
    • 在以上代码Handles后面加上多个文本框的KeyPress事件,各事件之间用逗号隔开,便可以实现给多个文本框做输入限制了。代码如下:
    • Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress,Textbox2.KeyPress,Textbox2.KeyPress,Textbox3.KeyPress
      



  • 相关阅读:
    docker vm 性能优劣
    Jeecg-Boot Spring Boot
    MyBatis-Plus
    Eclipse lombok java
    MySQL 高可用性—keepalived+mysql双主
    如何使用 Docker 来限制 CPU、内存和 IO等资源?
    Requires: libc.so.6(GLIBC_2.14)(64bit)
    项目管理、软件、禅道 VS JIRA
    解决Window安全中心对Kitematic-0.17.3-Ubuntu.zip提示病毒,但无法删除的问题。
    正则表达式 贪婪模式
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3148312.html
Copyright © 2020-2023  润新知