代码之家  ›  专栏  ›  技术社区  ›  daveomcd

VB.NET:如果用户要用未保存的数据关闭程序,我如何提示用户?

  •  4
  • daveomcd  · 技术社区  · 14 年前

    我正在使用Visual Basic 2010学习版。我有一个与我创建的本地SQL数据库链接的DataGridView。我现在有它,用户可以点击一个按钮将他们的数据保存到数据库,但不确定如何提示他们保存或放弃更改,如果他们关闭程序而不保存。

    谢谢!

    5 回复  |  直到 14 年前
        1
  •  6
  •   Jim    14 年前

    保留全局布尔值( Dim _bDocumentChanged as boolean )当触发任何DataGridView事件时,将布尔值设置为 True 然后在表单_Closing()中,选中该布尔值并抛出一个消息框。

        2
  •  4
  •   Buck Hicks    14 年前

    我认为您还应该提供一个取消,这样用户就可以取消关闭,而不必保存数据或丢失他们已经做的更改。像这样:

        Private Sub frmMain_FormClosing(ByVal sender As Object, _
            ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    
        Dim Answer As DialogResult = MessageBox.Show("Save Data before close?", _
            "Data Check", MessageBoxButtons.YesNoCancel)
    
        Select Case Answer
            Case Windows.Forms.DialogResult.Yes
                SaveRecords()
            Case Windows.Forms.DialogResult.No
                Exit Sub
            Case Windows.Forms.DialogResult.Cancel
                e.Cancel = True
            Case Else
                Exit Sub
        End Select
    
    End Sub
    
        3
  •  2
  •   Aaron Daniels    14 年前

    我会用你的表格提示他们。像这样的方法应该可以做到:

    Private Sub YourDataGridViewForm_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        If MessageBox.Show(Me, "Do you want to save your changes?", "Unsaved Changes!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = Windows.Forms.DialogResult.Yes Then
            SaveChanges()
        End If
    End Sub
    
    Private Sub SaveChanges()
        MessageBox.Show("Changes saved...")
    End Sub
    
        4
  •  1
  •   winwaed    14 年前

    捕获应用程序关闭事件。首先要做的是提示用户。如果他们说是,那就保存。然后执行正常停机。

    如果存在任何未保存的数据,也可以保留一个标记来跟踪。这在用户保存时清除,但在用户进行更改时设置。

        5
  •  1
  •   John Alexiou    14 年前

    我建议在主窗口中使用关闭窗体事件进行陷阱。记住,当主窗口关闭时,应用程序终止。如果这是MDI应用程序,在允许应用程序结束之前,必须检查每个子窗口是否可以保存。