vb窗口中有10个文本框,在每个文本框中填写姓名,每个姓名只能填写一次,如果名字重复就自动提示,怎么做

vb窗口中有10个文本框,在每个文本框中填写姓名,每个姓名只能填写一次,如果名字重复就自动提示,怎么做到,谢谢各位

可以在文本框失去焦点(LostFocus事件)的时候检查,用失去焦点的文本框的内容与其他文本框的内容逐一比较,有相同内容的,首先弹出Msgbox对话框提示,然后让该文本框重新获得焦点(SetFocus),重新输入。追问

代码怎么写

追答

'在窗体上创建10个文本框。
'最好是创建有10个成员的TextBox控件数组,这里是txtName(0)到txtName(9)

 

'定义一个控制变量,以避免连续发生失去焦点事件,造成死循环。


Dim bln As Boolean

 

Private Sub Form_Load()
    bln = False

End Sub

Private Sub txtName_Change(Index As Integer)
    bln = False

End Sub

Private Sub txtName_LostFocus(Index As Integer)
    If Not bln Then
        For i = 0 To 9
            If Index <> i And txtName(Index).Text = txtName(i).Text And txtName(Index).Text <> "" Then
                MsgBox "姓名重复,请重新填写!"
                bln = Not bln                   '在这里修改控制变量
                txtName(Index).SelStart = 0
                txtName(Index).SelLength = Len(txtName(Index).Text)
                txtName(Index).SetFocus
                Exit For
            End If
        Next
    End If

End Sub

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-19
Private Sub Form_Load()
'在窗体添加10个数组文本框
'分别是:Text1(0)、Text1(1)、Text1(2)....Text1(8)、Text1(9)
End Sub

Private Sub Text1_LostFocus(Index As Integer)    '在失去焦点时
Dim XX As Integer, YY As String
XX = Text1(Index).Index
YY = Text1(XX).Text
If YY = "" Then
    MsgBox "第 " & XX + 1 & "个姓名没有输入", 16, "错误"
    Exit Sub
End If
If XX > 0 Then
For I = 0 To XX - 1
    If Text1(I).Text = YY Then
        MsgBox "你输入的第 " & I + 1 & "个姓名和第 " & XX + 1 & "个姓名重复!", 16, "错误!"
        Exit Sub
    End If
Next I
End If
End Sub

已经检测运行,没有问题。

本回答被提问者和网友采纳
第2个回答  2013-09-19
'文本框控件组 Text1(0)到Text1(9)
Private Sub Text1_LostFocus(Index As Integer)
 For i = 0 To 9
    If Index <> i And Text1(Index).Text = Text1(i).Text And Text1(Index).Text <> "" Then
       MsgBox "名字已经存在"
       Text1(Index).Text = ""
       Text1(Index).SetFocus
       Exit For
    End If
 Next
End Sub
'请参考采纳,谢谢!

第3个回答  2013-09-19
最简单的是定义一个字符串变量用作记录,然后用查询的方法看看有没有重复的
第4个回答  2013-09-19
vb广百股份报告

vb窗口中有10个文本框,在每个文本框中填写姓名,每个姓名只能填写一次...
可以在文本框失去焦点(LostFocus事件)的时候检查,用失去焦点的文本框的内容与其他文本框的内容逐一比较,有相同内容的,首先弹出Msgbox对话框提示,然后让该文本框重新获得焦点(SetFocus),重新输入。

VB操作使用文本框连续输入10个数据到数组中,每输入一个数据点确定后
Dim a(9)Private Sub Command1_Click() Static Counter As Integer a(Counter) = Val(Text1.Text) Text2.Text = Text2.Text + "(" & Format(Counter + 1, "00") & ")" + Space(15) & a(Counter) & vbCrLf Counter = Counter + 1 Text1.Text = "" Text1.SetFocusEnd...

VB6.0中,如何限制10个数组文本框text1只能输入数字、一个小数点,和退格...
Text1的Index属性设置为0 然后复制Text1为数组控件,Index属性从1到9 然后在数组控件Text1的KeyPress事件中写代码。

VB怎么在文本框中输入内容
一共七步首先,在窗口中添加一个文本框,如下图所示,然后进入下一步。其次,单击文本框,在属性窗口中设置文本框的属性,清除文本,如下图所示,然后进入下一步。接着,将文本框的enabled属性设置为False,如下图所示,然后进入下一步。然后,在表单上添加一个命令按钮,如下图所示,然后进入下一步。

vb中一个文本框中只能输一个数字并输完后跳到下一个文本框代码...
每个文本框的maxlength都设置成1 代码入下 Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)If IsNumeric(Text1.Text) Then ' 用IsNumeric函数判断输入是否为数字Text2.SetFocus '如果是数字 跳到下一个文本框ElseText1.Text = "" '如果不是数字 清空文本框重新输入End IfEnd ...

vb打开一个有10个随机数的文本,赋值给数组后排序并在文本框中显示
'先去D盘上建一个名为 f.txt 的文件,输入十个随机数,用空格分隔开。然后窗体上一个文本框和一个command1按钮。朋友。Option Base 1 Private Sub Command1_Click()Dim a(10) As Integer Text1 = ""Open "d:\/f.txt" For Input As #1 If Not EOF(1) Then For i = 1 To 10 Input ...

VB 让文本框只能输入一个字符,且输入后,如果再输入其他字符,则覆盖第...
Private Sub Text1_Change()If Len(Text1.Text) > 1 Then Text1.Text = Right(Text1.Text, 1)Text1.SelStart = 2 '把插入点移到第一个字符之后 End If End Sub 在VB6.0下通过调试

vb里面添加文本框,让文本框可以多行显示,满了换行,有一个竖直的滚动条...
object.MultiLine object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。设置值 MultiLine 属性设置值有:设置值 描述 True 允许多行文本。False (缺省值)忽略回车符并将数据限制在一行内。说明 当键入文本超出文本框时多行 TextBox 控件将使正文卷绕。使用 ScrollBars 属性也能够在 ...

VB窗口中如果有多个文本框,怎样用数组分别为他们赋值?
你要一个一个进行赋值。如果文本框的名字是有规律的,比如Text1、Text2、Text3……而且数字是连续的,则可以这样(这是一种非常规的用法):For i = 0 To UBound(a) Controls("Text" & i + 1).Text = a(i)Next强烈建议尽量使用控件数组,不但运行速度较快,而且可以节省系统资源消耗 ...

关于VB编程实现:在文本框中每输入一个字符时,立即在窗体上输出当前文本...
Print "***"; Text1; "***" '这个表示在窗体上显示Text1 的文本内容,内容左右各加3个“*”End Sub '本行表示事件过程的结束 --- Private Sub Command1_Click() ’这个表示是Command1的单击事件,本行表示事件过程的开始 Cls ...

相似回答