如何获取VB.net中更改的文本框内容的事件处理程序?

时间:2019-07-23 04:41:17

标签: vb.net textbox

在我的应用程序中,我有一个用于输入一些详细信息并最终保存在数据库中的表单。我在数据库中有日志记录表来保存在特定记录中所做的所有更改。我使用编辑表单编辑这些详细信息,即从数据库获取数据以填写编辑表单。 如果我以编辑形式更改任何选项,那么我将有标志变量和该特定更改的消息存储在数据库中。 对于组合框选择更改,我有事件处理程序SelectionChangeCommitted(),它工作正常。 但是对于文本框,如果我使用TextChanged(),则在我添加数据以从数据库本身编辑表单时会触发此事件处理程序。因此,即使不更改文本框中的任何内容,标志集true和日志记录表也会将更改添加为日志。我该如何限制呢?

编辑表单:

ra_edittool = cmda_edittool.ExecuteReader()
            While ra_edittool.Read()

                frma_edit.ne_editindex = ra_edittool("id").ToString()
                frma_edit.e1.SelectedItem = ra_edittool("Process").ToString()
                frma_edit.e2.Text = ra_edittool("Risk Description").ToString()
                frma_edit.e3.SelectedItem = ra_edittool("Likelihood").ToString()
                frma_edit.e4.SelectedItem = ra_edittool("Occurrences").ToString()                
                frma_edit.e14.Text = ra_edittool("Mitigation Plan").ToString()
                     End While
            conn.Close()

在保存编辑表单时: 使用'UPDATE'命令将数据保存到数据库表后。我正在调用EditLog()函数来保存日志。

Private Sub Editlog()

        Dim message As String = ""

        If fRiskChange(0) = True Then
            message = " Likelihood for the Risk was changed"

        ElseIf fRiskChange(1) = True Then
            message = " Previous Occurences option for the Risk was changed"  


        ElseIf fRiskChange(10) = True Then
            message = " Mitigation Plan for the Risk was changed"


        Dim rSquery As String
        rSquery = "INSERT INTO riskedit_log (timestamp ,Process,risk_id,user_id,message)"
        rSquery = rSquery + "VALUES(curdate(),@process,@riskid,@user,@message);"

        conn.Open()
        Dim reditlog As New MySqlCommand(rSquery, conn)
        reditlog.Parameters.AddWithValue("Process", sProcName)
        reditlog.Parameters.AddWithValue("riskid", ne_editindex)
        reditlog.Parameters.AddWithValue("user", "NULL")
        reditlog.Parameters.AddWithValue("message", message)

        reditlog.ExecuteNonQuery()
        conn.Close()

    End Sub

这些控件的事件处理程序:

Private Sub e3_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles e3.SelectionChangeCommitted
        ' MsgBox("Likelihood")
        fRiskChange(0) = True
    End Sub

Private Sub e4_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles e4.SelectionChangeCommitted
        ' MsgBox("Previous Occurences value changed")
        fRiskChange(1) = True
    End Sub

Private Sub e14_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles e14.TextChanged
' MsgBox("Mitigation plan changed")
        fRiskChange(10) = True
    End Sub

当我打开编辑表单时,e14_TextChanged()会被触发一次,即使在该文本框中没有进行任何更改,该标志也会得到true并在编辑日志表中被保存。

0 个答案:

没有答案