【发布时间】:2010-11-17 18:58:02
【问题描述】:
我正在使用 Visual Basic 2010 Express。我有一个与我创建的本地 SQL 数据库链接的 DataGridView。我目前有它,用户可以单击按钮将数据保存到数据库,但不确定如果他们关闭程序而不保存,如何提示他们保存或放弃更改。
谢谢!
【问题讨论】:
标签: vb.net datagridview save
我正在使用 Visual Basic 2010 Express。我有一个与我创建的本地 SQL 数据库链接的 DataGridView。我目前有它,用户可以单击按钮将数据保存到数据库,但不确定如果他们关闭程序而不保存,如何提示他们保存或放弃更改。
谢谢!
【问题讨论】:
标签: vb.net datagridview save
保持一个全局布尔值 (Dim _bDocumentChanged as boolean) 并在触发任何 DataGridView 事件时将您的布尔值设置为 True,然后在 Form_Closing() 上检查该布尔值并抛出一个消息框。
【讨论】:
我认为您还应该提供取消,以便用户可以取消关闭而不必保存数据或丢失他们已经做出的更改。像这样的:
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
【讨论】:
我会使用表单的 OnClosing 事件提示他们。像这样的东西应该可以解决问题:
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
【讨论】:
捕获应用程序关闭事件。您要做的第一件事是提示用户。如果他们说是,那么保存。然后执行正常关机。
您还可以保留一个标志来跟踪是否存在任何未保存的数据。这在用户保存时被清除,但在他们进行更改时设置。
【讨论】:
我建议在主窗口中使用 FormClosing 事件进行陷阱。请记住,当主窗口关闭时应用程序终止。如果这是一个 MDI 应用程序,您必须在允许应用程序结束之前检查每个子窗口是否可以保存。
【讨论】: