Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查vb.net中的一个或两个文本框是否已更改_Vb.net - Fatal编程技术网

检查vb.net中的一个或两个文本框是否已更改

检查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

是否可以检查一个或两个文本框是否已更改其值

我已经根据一个ASNWER更新了我的代码,我想我遗漏了一些东西。如果id和时间已更改,则查询仅在第一次运行时有效。如果id是单独更改的,或者两者都更改了,或者只是同时更改了,则不会插入

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