怎么控制EDIT文本框内输入的数字,当有小数时,小数点后只能输入一位小数

如何控制EDIT文本框内输入的数字,当有小数时,小数点后只能输入一位小数


如何控制EDIT文本框内输入的数字,当有小数时,小数点后只能输入一位小数







其他问题还有:(1)如何控制只能输入一个小数点 (2)如何控制只能输入数字 (3)全角数字转半角

------解决方案--------------------
MaskEdBox1.Format = "0.0"
------解决方案--------------------
给你两个方法控制textbox

方法1:

Dim WithEvents Rs As ADODB.Recordset

Dim sPrev As String
Private Sub Form_Load()
With Text1.DataFormat
.Type = fmtCustom
.Format = "0.0"
End With

Set Rs = New ADODB.Recordset

With Rs
.Fields.Append "TheData", adDouble
.Open
.AddNew
End With
Set Text1.DataSource = Rs
Text1.DataField = "TheData"

End Sub


Private Sub Text1_Validate(Cancel As Boolean)
On Error GoTo ErrHandler
If Not IsNumeric(Text1) Then
Text1 = sPrev
Else
sPrev = Text1
End If

Exit Sub
ErrHandler:
MsgBox Err.Description

End Sub

方法2:
Private Sub Text1_Change()
With Text1
If .Text <> "" Then
If Not IsNumeric(Text1) Then
.SelStart = .SelStart - 1
.SelLength = 1
.SelText = ""
Else
Dim m As Double
m = Val(.Text) * 10
If m <> Int(m) Then
.Text = CStr(Int(m) / 10)
.SelStart = Len(.Text)
End If
End If
End If
End With
End Sub

------解决方案--------------------
Masked Edit 控件


Masked Edit 控件提供受限制的数据输入及格式化的数据输出。它显示提示信息,说明输入的数据或显示的数据类型。此控件看起来很象工具栏中的一个图标。



文件名

MSMASK32.OCX

类名

MaskEdBox

说明

Masked Edit 控件通常表现为一个标准文本框控件,增强了选择掩码输入和格式化输出的功能。如果没有使用输入掩码,那么,除了它的动态数据交换 (DDE) 功能,Masked Edit 控件的状态更接近于标准文本框。

如果用 Mask 属性定义输入掩码,则 Masked Edit 控件中的每一个字符位置,或者是指定类型的占位符,或者是原义字符。原义字符或 literals 可以指出所用数据的类型。例如,电话号码的区号两边的圆括号就是原义字符:(206)。

如果输入的字符与输入掩码冲突,控件将产生 ValidationError 事件。输入掩码不允许在控件中输入无效字符。

Masked Edit 控件具有三个被绑定的属性:DataChanged、DataField 和 DataSource。这意味着可将它链接到数据控件上,并可显示记录集中当前记录的字段值。Masked Edit 控件也可向记录集中写值。

如果可能的话,在读取 DataField 属性引用的字段值时,会将此值转换成 Text 属性的字符串。如果记录集是可更新的,那么字符串将转换成该字段的数据类型。

为了在定义掩码后清除 Text 属性,首先要给一个空字符串设置 Mask 属性,然后再给空字符串设置 Text 属性。

MaskedEdit1.Mask = ""
MaskedEdit1.Text = ""

在定义输入掩码时,Masked Edit 控件的状态就不同于标准文本框了。当输入数据或移动插入点时,插入点会自动跳过原义字符。

当插入或删除字符时,插入点右侧的所有非原义字符都必须跟着移位。如果这些字符的移位导致有效性错误,则应防止插入或删除,同时会触发 ValidationError 事件。

假设 Mask 属性被定义为 "?###",而 Text 属性的当前值是 "A12"。如果想把字母“下”插入到字母 "A"的左侧,"A" 就会右移。因为要求输入掩码中的第二个值为数字,所以 "A" 使控件生成 ValidationError 事件。

Masked Edit 控件也供 Text 属性的值在运行时有效。如果 Text 属性的设置使属性自身与输入掩码冲突,则控件生成运行时错误。

可以象对标准文本框控件那样,用与那里相同的方法选择文本。当删除选定文本时,控件将移动选定文本右侧的其余字符。但是,在移位过程中可能导致有效性错误的任何剩余字符都被删除了,所以不会产生 ValidationError 事件。

通常,当把 Masked Edit 控件中的选定文本复制到剪贴板时,包括原义字符在内的全部选定文本都被送到剪贴板上。用 ClipMode 属性,可以只将用户输入的数据送到剪贴板上,而不会复制输入掩码中的原义字符。

------解决方案--------------------
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 8, 9, 13

Case Asc("."), Asc("0") To Asc("9")
If InStr(Text1, ".") Then
If KeyAscii = Asc(".") Then
KeyAscii = 0
Exit Sub
End If