只支持18位的新身份证号码,但是有些老人只有第一代的身份证
在窗口中的身份证的文本输入框,DataParse代码输入:
If e.Value IsNot Nothing Then
Dim d As String = e.Value
If ValidPIN(d) = False Then
If d.Length = 15 Then
d = d.Insert(6,"19")
Dim str0,str1,str2,str3,str4,str5,str6,str7,str8,str9,str10,str11,str12,str13,str14,str15,str16 As String
Dim Int0,Int1,Int2,Int3,Int4,Int5,Int6,Int7,Int8,Int9,Int10,Int11,Int12,Int13,Int14,Int15,Int16 As Integer
str0 = d.Chars(0)
If Integer.TryParse(str0, Int0) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str1 = d.Chars(1)
If Integer.TryParse(str1, Int1) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str2 = d.Chars(2)
If Integer.TryParse(str2, Int2) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str3 = d.Chars(3)
If Integer.TryParse(str3, Int3) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str4 = d.Chars(4)
If Integer.TryParse(str4, Int4) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str5 = d.Chars(5)
If Integer.TryParse(str5, Int5) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str6 = d.Chars(6)
If Integer.TryParse(str6, Int6) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str7 = d.Chars(7)
If Integer.TryParse(str7, Int7) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str8 = d.Chars(8)
If Integer.TryParse(str8, Int8) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str9 = d.Chars(9)
If Integer.TryParse(str9, Int9) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str10 = d.Chars(10)
If Integer.TryParse(str10, Int10) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str11 = d.Chars(11)
If Integer.TryParse(str11, Int11) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str12 = d.Chars(12)
If Integer.TryParse(str12, Int12) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str13 = d.Chars(13)
If Integer.TryParse(str13, Int13) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str14 = d.Chars(14)
If Integer.TryParse(str14, Int14) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str15 = d.Chars(15)
If Integer.TryParse(str15, Int15) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
str16 = d.Chars(16)
If Integer.TryParse(str16, Int16) = False Then
MessageBox.Show("输入的身份证号码含非法字符!")
Return
End If
Dim r,m As Integer
Dim n As String
r = Int0 * 7 + Int1 * 9 + Int2 * 10 + Int3 * 5 + Int4 * 8 + Int5 * 4 + Int6 * 2 + Int7 * 1 + Int8 * 6 + Int9 * 3 + Int10 * 7 + Int11 * 9 + Int12 * 10 + Int13 * 5 + Int14 * 8 + Int15 * 4 + Int16 * 2
m = r Mod 11
Select Case m
Case 0
n = "1"
Case 1
n = "0"
Case 2
n = "X"
Case 3
n = "9"
Case 4
n = "8"
Case 5
n = "7"
Case 6
n = "6"
Case 7
n = "5"
Case 8
n = "4"
Case 9
n = "3"
Case 10
n = "2"
End Select
d = d & n
e.Value = d
Else
MessageBox.Show("输入的身份证号码不是15位!")
End If
End If
End If
自动将15位身份证号码,转换成18位号码。
请各位大神,精简一下代码。附上 二代居民身份证验证码计算原理.doc
[此贴子已经被作者于2012-11-28 17:12:37编辑过]