我们熟悉的Textbox

来源:互联网 发布:北京java编程培训 编辑:程序博客网 时间:2024/04/29 10:11

创建只读文本框

  • 方法一:
  • 可用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 IfEnd 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 IfEnd 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 IfEnd 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



原创粉丝点击