機房收費系統總結之關閉窗體

我們在系統開發的時候,通常情況下都會遇到關於對主窗口關閉時需要做一些列的業務操作,或者彈出提示框提醒用戶是否真的要關閉窗口的情況。但是它們具體是怎麼實現的呢?下面和大家來分享一下我在做機房收費系統中遇到的這類問題的具體解決方案。

這是VB6.0的代碼:

'判斷系統是否退出
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)

    Dim strOnWork As String
    Dim strMsg As String
    Dim rstOnWork As ADODB.Recordset
    Dim rstWorkLog As ADODB.Recordset
    Static intSerial As Integer
    
    If MsgBox("是否確定退出?", vbOKCancel + vbExclamation, "系統提示") = vbOK Then
         
        '查詢正值班老師信息表
        strOnWork = "select * from Onwork_info where UserID='" & g_strUserName & "'"
        Set rstOnWork = ExecuteSQL(strOnWork, strMsg)
        
        '查詢教師工作記錄表,獲取記錄數
        strOnWork = "select * from worklog_info "
        Set rstWorkLog = ExecuteSQL(strOnWork, strMsg)
        intSerial = rstWorkLog.RecordCount + 1
        
        '更新教師工作記錄表
        strOnWork = "INSERT worklog_info VALUES(" & intSerial & ",'" & Trim(rstOnWork!UserID) & _
                    "','" & rstOnWork!UserLevel & "','" & rstOnWork!LoginDate & "','" & _
                    rstOnWork!LoginTime & "','" & Date & "','" & Time & "','" & _
                    rstOnWork!Computer & "','" & "true" & "')"
        Call ExecuteSQL(strOnWork, strMsg)
        
        '更新正值班老師信息表
        rstOnWork.Delete
        
        rstOnWork.Close
        
        Cancel = 0
        
    Else
    
        Cancel = 1
          
    End If
    
End Sub



這是VB.Net的代碼:

'***以下系統是三層架構中U層關閉主窗體時,判斷系統是否退出的代碼***

Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    Dim teacherWorkManageBLL As New BLL.TeacherWorkManageBLL
    Dim workLogEntity As New Entity.WorkLogEntity

    If MsgBox("是否確定退出?", vbOKCancel + vbExclamation, "系統提示") = vbOK Then
        '用戶工作記錄實體賦值
        workLogEntity.UserId = frmLogin.txtUser.Text.Trim
        workLogEntity.LogoutTime = Now
        '添加用戶下線時間
        teacherWorkManageBLL.ModifyWorkLog(workLogEntity)

        '***在這裏可以加入系統退出前的一些列操作***

        e.Cancel = False
        '關閉此父窗體的所有子窗體
        For Each ChildForm As Form In Me.MdiChildren
            ChildForm.Close()
        Next
        Me.Close()
        e.Cancel = False
    Else
        e.Cancel = True
    End If

End Sub


通過這兩種語言代碼對同一功能的實現比較,我們會發現,在編程的世界裏,其實語言都是想通的,只是表達方式不同了而已。我們這些程序員其實要學習的更多的並非語言,而是思想邏輯,系統架構。



發佈了48 篇原創文章 · 獲贊 10 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章