vb listbox每行里有文本加数字,如何按数字从大到小排序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb listbox每行里有文本加数字,如何按数字从大到小排序?相关的知识,希望对你有一定的参考价值。

参考技术A 把ListBox的Sorted属性改为:True追问

从大到小排序

追答

这个超出了VB的ListBox控件能力,不过可以使用自定义函数实现,如冒泡法排序,
限于回答所得,我只给你链接和方法,具体使用就看你的造化了,呵呵

点下面的链接,也可以去搜索“冒泡排序法”

参考资料:http://blog.csdn.net/prsniper/article/details/4448208

参考技术B Private Sub Command1_Click()
For I = 1 To List1.ListCount - 1
For j = 0 To I - 1
If Bjzfc(List1.List(j), List1.List(I)) Then
k = List1.List(I)
List1.List(I) = List1.List(j)
List1.List(j) = k
End If
Next j
Next I
End Sub

Private Sub Form_Load()
List1.AddItem "eio44251hret"
List1.AddItem "eio536hret"
List1.AddItem "eio968hret"
List1.AddItem "eio53h7et"
List1.AddItem "e43h7et"
List1.AddItem "e563h7et"
List1.AddItem "e63h7et"
List1.AddItem "e54878h7et"
List1.AddItem "e53h7et"
End Sub

Private Function Bjzfc(S1 As String, S2 As String) As Boolean
Dim I As Integer, T1 As Long, T2 As Long
For I = 1 To Len(S1)
If Val(Mid(S1, I, 1)) > 0 Then T1 = Val(Mid(S1, I)): Exit For
Next I
For I = 1 To Len(S1)
If Val(Mid(S2, I, 1)) > 0 Then T2 = Val(Mid(S2, I)): Exit For
Next I
If T1 > T2 Then Bjzfc = False Else Bjzfc = True
End Function本回答被提问者采纳

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 listbox每行里有文本加数字,如何按数字从大到小排序?的主要内容,如果未能解决你的问题,请参考以下文章

vb获取listbox中所有选中行的文本

vb.net如何在listbox中增加双击事件?

VB 用API读取别的软件的LISTBOX中的某项和项目的总数

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

VB LISTBOX如何一行一行显示文本文件的内容,单击listbox一行这行内容显示到text1中

VB里如何逐行读取listbox中的数据