请问vb中如何查找程序里面的多个文本框(或其他控件)的句柄啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问vb中如何查找程序里面的多个文本框(或其他控件)的句柄啊?相关的知识,希望对你有一定的参考价值。

现在用findwindow可以查出程序的句柄,但是这个程序有很多的文本框,怎样能准确的查询每一个文本框的句柄啊,并且怎么确定和程序中文本框的对应关系啊!
谢谢牛A和牛C间徘徊朋友的回答,但是一个窗口有很多很多文本框,这样的确能查出句柄,但是怎么能做到准确定位那?能不能给个例子看看??谢谢

参考技术A 用findwindowex递归调用找出所有窗口内的控件,再用GetClassName根据要求找出类名

vb中,如何限制输入的文本框的内容只能是数字数或者字母?

比如我我限制某一文本框里面输入的内容只能是数(可以是小数),请问如何实现呢?如果限制只能输入整数,请问如何实现呢?如果限制只能输入字母请问如何实现呢?

参考技术A Private Sub Text1_Change()'有点懒
If IsNumeric(Text1) = False Then
MsgBox "不是数字,请输入数字", 0, "提示"
Text1.SetFocus
Text1.SelStart = Len(Text1)
SendKeys "BACKSPACE"
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If Chr(KeyAscii) Like "[a-zA-Z]" = False Then
MsgBox "不是字母,请输入字母", 0, "提示"
KeyAscii = 0
End If
End Sub
Private Sub Text3_Change()
If IsNumeric(Text3) = False Then
MsgBox "不是数字,请输入数字", 0, "提示"
Text3.SetFocus
Text3.SelStart = Len(Text3)
SendKeys "BACKSPACE"
ElseIf Val(Text3) - CLng(Text3) <> 0 Then'有点懒
MsgBox "不是整数,请输入整数", 0, "提示"
End If
End Sub追问

sendkeysbackspace 是什么意思呢?

追答

退格(删除。看你键盘上的名称,应该是一样)。主要针对键盘操作。不然就如推荐答案,只是简单的理论操作。否则会有漏洞或叫不完善。

本回答被提问者采纳
参考技术B Dim 输入限制 As String = "0123456789.abcdefghijklmnopqrstuvwxyz"
Dim 输入字符 As Char = e.KeyChar
If InStr(输入限制, 输入字符) <> 0 Or e.KeyChar = ChrW(8) Then
If 输入字符 = "." And InStr(TextBox1.Text, 输入字符) <> 0 Then
e.Handled = True
Else
e.Handled = False
End If
End If
这段代码写在文本框的 KeyPress 事件里,.NET 的,6.0 好像类似,但没有 e.Handled = True 或者 False,这里为 True 时改成直接退出过程“Exit Sub”,False 不写了好像行,没有 6.0 没法给你试试
参考技术C 这个需要在文本框的keypress事件中对输入的keyascii进行检查, 如果不满足要求则输入无效,例如只能输入字母程式如下:
private sub Text1_keypress(KeyAscii as Integer)
select case keyascii
case 65 to 90,97 to 122 'A-Z, a-z

case else
Keyascii=0
end select
end sub
参考技术D 只能输入数字
Private Sub Form_Resize()
If Not IsNumeric(Text1.Text) Then
'如果输入的不是数字,删除非数字
Text1.Text = Val(Text1.Text)
Text1.SelStart = Len(Text1.Text)
End If
End Sub
Private Sub Text1_Change()
If Not IsNumeric(Text1.Text) Then
'如果输入的不是数字,删除非数字
Text1.Text = Val(Text1.Text)
Text1.SelStart = Len(Text1.Text)
End If
End Sub

只能输入整数
Private Sub Form_Resize()
tmp = ""
For n = 1 To Len(Text1.Text)
If Asc(Mid(Text1.Text, n, 1)) > 47 And Asc(Mid(Text1.Text, n, 1)) < 58 Then
tmp = tmp & Mid(Text1.Text, n, 1)
End If
Next
Text1.Text = Val(tmp)
Text1.SelStart = Len(Text1.Text)

End Sub
Private Sub Text1_Change()
tmp = ""
For n = 1 To Len(Text1.Text)
If Asc(Mid(Text1.Text, n, 1)) > 47 And Asc(Mid(Text1.Text, n, 1)) < 58 Then
tmp = tmp & Mid(Text1.Text, n, 1)
End If
Next
Text1.Text = Val(tmp)
Text1.SelStart = Len(Text1.Text)
End Sub

只输入字母
Private Sub Text1_Change()
'65 97 90 122
tmp = ""
For n = 1 To Len(Text1.Text)
If (Asc(Mid(Text1.Text, n, 1)) > 64 And Asc(Mid(Text1.Text, n, 1)) < 91) Or (Asc(Mid(Text1.Text, n, 1)) > 96 And Asc(Mid(Text1.Text, n, 1)) < 123) Then
tmp = tmp & Mid(Text1.Text, n, 1)
End If
Next
Text1.Text = tmp
Text1.SelStart = Len(Text1.Text)
End Sub
第5个回答  2013-02-08 '*********************************************************************************************
'名称 Sub_CheckNum
'作者   Morn Woo
'功能 检查键入的是否是数字 ,不是则释放按键
'参数 iPressKey(引用传递):按键的ASCII码;如果要处理浮点数的输入,则要把已经输入的部分作为参数sstr 传入
'应用方法 在keypress事件中调用,用事件的KeyAscii参数作为这里的参数iPressKey
'*********************************************************************************************
Sub Sub_CheckNum(ByRef iPressKey As Integer, Optional sStr = "")
sStr = Trim(sStr)
If Len(sStr) = 0 Then
'1处理自然数输入的情况
Select Case iPressKey
Case 48 To 57, 8, 13 '8是backspace,131enter
'处理数字字符问题
Case Else:: iPressKey = 0
End Select
Else
'2处理浮点数输入的情况
Select Case iPressKey
Case 45 '处理负号字符问题
If InStr(sStr, "-") > 0 Then: iPressKey = 0
Case 48 To 57, 8, 13 '处理数字字符问题
Case 44: If sStr = "" Then iPressKey = 0 '处理逗号字符问题
Case 46 '处理小数点字符问题
If InStr(sStr, ".") > 0 Then: iPressKey = 0
Case Else:: iPressKey = 0
End Select
End If
End Sub

以上是关于请问vb中如何查找程序里面的多个文本框(或其他控件)的句柄啊?的主要内容,如果未能解决你的问题,请参考以下文章

vb里面用findwindowex查找不到东西

vb 知道窗口句柄以及怎样获得窗口上文本框和按钮句柄并传递信息

请问vb如何自动注册ocx文件?

VB如何把文件内容显示在文本框中?

vb中,如何限制输入的文本框的内容只能是数字数或者字母?

vb编程里,如何实现点击窗体中一个文本框出现日历控件,然后可以选择相应的日期,填入文本框,日历控件消失?