检查vb.net中的一个或两个文本框是否已更改
是否可以检查一个或两个文本框是否已更改其值 我已经根据一个ASNWER更新了我的代码,我想我遗漏了一些东西。如果id和时间已更改,则查询仅在第一次运行时有效。如果id是单独更改的,或者两者都更改了,或者只是同时更改了,则不会插入检查vb.net中的一个或两个文本框是否已更改,vb.net,Vb.net,是否可以检查一个或两个文本框是否已更改其值 我已经根据一个ASNWER更新了我的代码,我想我遗漏了一些东西。如果id和时间已更改,则查询仅在第一次运行时有效。如果id是单独更改的,或者两者都更改了,或者只是同时更改了,则不会插入 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged idchanged
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
idchanged = True
flagam = True
flagpm = True
End Sub
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
timechanged = True
flagam = True
flagpm = True
End Sub
主要
您可以让两个文本框订阅相同的事件,如下所示:
Private Sub TextBoxAOrB_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles textboxa.TextChanged, textboxb.TextChanged
Dim txtBoxSender As TextBox = sender
If txtBoxSender.Equals(textboxa) Then
'DO STUFF
ElseIf txtBoxSender.Equals(textboxb) Then
If textboxa.Text <> id Then
'TEXTBOX A also changed
' DO STUFF
End If
Else
'SOMETHING WRONG
End If
End Sub
Private子TextBoxAOrB_TextChanged(ByVal发送方作为System.Object,ByVal e作为System.EventArgs)处理textboxa.TextChanged,textboxb.TextChanged
Dim txtBoxSender作为文本框=发件人
如果txtBoxSender.Equals(textboxa),则
“做事
ElseIf txtBoxSender.Equals(textboxb)然后
如果textboxa.Text id,则
'文本框A也发生了变化
“做事
如果结束
其他的
“出什么事了
如果结束
端接头
由于您一次只能检查一个值,因此当textboxa发生更改时将运行此程序,如果textboxb在此之后发生更改,则会再次运行此程序,但如果textboxb自行更改(这似乎是您在问题中所说的)如果您依赖于事件,您可能会遇到运行哪种评估代码的问题 只要用户更改任何内容
TextBox1
,即使只按一个键,TextBox1.Changed
事件也会触发。无法判断用户是否要更改TextBox2
,并让代码等待所有更改完成后再开始评估
但是,如果您想等待用户完成对其中一个或两个文本框的更改,然后让他们单击按钮(称之为btnEvaluate
),您可以为每个文本框使用相应的.Changed
事件将布尔标志更改为true,然后在btnEvaluate
单击事件中,您可以运行适用于哪些标志为true的代码
像这样-我想
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
tb1Changed = True
End Sub
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
tb2Changed = True
End Sub
Private Sub btnEvaluate_Click(sender As Object, e As EventArgs) Handles btnEvaluate.Click
Select Case True
Case tb1Changed And tb2Changed
'do stuff 1st block of code
tb1Changed = False
tb2Changed = False
Case not tb1Changed And tb2Changed
'dostuff 2nd block of code
tb2Changed = False
End Select
End Sub
当然,您可以删除代码,将标志设置为False
,如果您需要它们保持True
,并将其放置在其他位置hi,这只起作用,如果(textbox1.text已更改)或(textbox1.text已更改和textbox2.text已更改)
hi先生,我有一个问题empID.Text id
,我的id
是通过生物识别技术从指纹日志中提取的。它存储在文本框中。我不确定这是否有效,因为一旦新的指纹实例登录,文本框就会改变。我认为它将始终返回False
,然后您可以存储一个旧的/新的值。所以旧的和当前的id,并以这种方式检测更改<代码>如果empID.Text old_id,则所有这些都是代码的细节。因此,在不知道这些细节的情况下,这个答案可能是最好的答案,所以在这两种情况下,你只能检查textboxa,因为textboxa会随着它们的变化而变化。嗨,先生,这就是我所想的,我想里面的代码太多了。让我试试,先生。看看你更新的问题-我建议不要使用文本框,而是使用标签,因为用户可能会意外更改文本框。谢谢先生的建议。我在属性中包含了它,到目前为止它们都是不可编辑的。先生,我正在试用您的代码,您如何将代码转换为案例tb1changed和tb2changed或只是tb2changed'dostuff我已经为您更新了答案。现在。如果两个文本框都已更改,则第一个代码块将运行。或者,如果只更改了第二个文本框,则运行第二个代码块。
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
tb1Changed = True
End Sub
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
tb2Changed = True
End Sub
Private Sub btnEvaluate_Click(sender As Object, e As EventArgs) Handles btnEvaluate.Click
Select Case True
Case tb1Changed And tb2Changed
'do stuff 1st block of code
tb1Changed = False
tb2Changed = False
Case not tb1Changed And tb2Changed
'dostuff 2nd block of code
tb2Changed = False
End Select
End Sub