学生信息系统优化(一)---文本框系列

一个软件在能够完成基本的功能的基础上,要让客户有更好的用户体验。优化是重中之重。在第一次验项目时,师傅给我指出了很多问题。尤其是文本框的问题最大,而且任务量还繁多。所以我就从它先下手。虽然比较麻烦,但是很多不同窗体里的文本框text都是一样的问题。本质不变,只需要改下名字就好。下面是几类问题

问题一:限制文本框输入字符个数

解决办法

1、直接在text文本框属性中定义MaxLength的值,MaxLength是设置文本框允许输入的字符最大数。超过设置数后,将不允许继续输入内容。

2.通过代码

Private Sub Text1_Change()
    If Len(Text1) >= 10 Then MsgBox "你已经输入了10个字,已到最大字符数!"
End Sub 

问题二:限制文本框输入的必须是数字

解决办法

Private Sub Text1_KeyPress(KeyAscii As Integer)
    If (KeyAscii < 48 Or KeyAscii > 57) Then
    End if
End sub

问题三:限制文本数字范围0-100(在问题二的基础上)

遇到的问题

Private Sub txtResult_LostFocus()
    Dim v As Integer
    If (AscW(txtResult) < 48 Or AscW(txtResult) > 57 ) Then
        MsgBox "请输入数字", vbOKOnly + vbExclamation, "警告"
        txtResult.Text = ""
        txtResult.SetFocus
    Else
        v = Val(txtResult.Text)
        If v < 0 Or v > 100 Then
            MsgBox "请输入0-100的数字", vbOKOnly + vbExclamation, "警告"
            txtResult.Text = ""
            txtResult.SetFocus
        End If
    End If
End Sub

刚开始我想的是既限制只能数字,又限制输入数字必须在0-100,刚开始我的代码是这样的,将这两点简单的糅合在一起,虽然能够简单的实现功能,但是又一个特别棘手的问题,如果光标移到这个文本框,但是没有输入任何字符,再将光标移开就会出现错误。

报错:实时错误5 无效的过程调用或参数

 If (AscW(txtResult) < 48 Or AscW(txtResult) > 57 Or txtResult.Text = "") Then 

显示该代码错误,通过代码我明白if条件语句中只有是数字和不是数字两种情况,缺少了第三种情况———文本框中没有任何字符。于是我将两种不是数字的情况放在了同一个if语句中,if语句条件改为下面的代码。

'如果不是数字或者也没有输入任何字符。
If (AscW(txtResult) < 48 Or AscW(txtResult) > 57 Or txtResult.Text = "") Then

但是问题并不是这么简单的好解决的,还是报错,错误原因一样。于是我开始在网上查,但是没有找到结果。然后我就放弃了在网上查,我就自己想办法,既然自己知道问题出在了哪里,那就自己解决呗!我换了另一种思路,将输入不是数字和没有输入任何字符这两种情况分开写,放在两个if语句中,结果就能运行了。

解决办法

Private Sub txtResult_LostFocus()
    Dim v As Integer
    If txtResult.Text <> "" Then
        If (AscW(txtResult.Text) < 48 Or AscW(txtResult.Text) > 57) Then
            MsgBox "请输入数字", vbOKOnly + vbExclamation, "警告"
            txtResult.Text = ""
            txtResult.SetFocus
        Else
            v = Val(txtResult.Text)
            If v < 0 Or v > 100 Then
                MsgBox "请输入0-100的数字", vbOKOnly + vbExclamation, "警告"
                txtResult.Text = ""
                txtResult.SetFocus
            End If
        End If
    Else
        MsgBox "成绩不能为空", vbOKOnly + vbExclamation, "警告"
    End If
End Sub

这件事也给我我一个教训,有时候遇到不会的,应该多动脑子,先试试自己能不能解决。虽然搜索引擎是一个好东西,但是先要尝试自己解决,不要让脑子成为一块石头。

问题四:下拉列表文本框不可键盘输入

解决方法

Private Sub ComboBox1_KeyPress(KeyAscii As Integer)
    KeyAscii = 0
End Sub 

猜你喜欢

转载自blog.csdn.net/liangjiabao5555/article/details/81290404
今日推荐