我有一个本地子,允许用户移动一行datagridview,由按钮点击触发。该子程序在调试器中工作正常,但是当它退出时,控制权被转移到调用表单,即当前表单被关闭。当没有移动行时,即当满足入口中的一个中止条件时,也会发生这种情况。简单地说:退出这个子将关闭表格!?!
Private Sub btnMove_Click(sender As Object, e As EventArgs) Handles btnMove.Click
Dim rowToGo As DataGridViewRow
Dim rtgIndex As Integer = 0
If (dgvAuftrag.RowCount <= 1) or (dgvAuftrag.CurrentRow Is Nothing) Then
Beep()
Exit Sub
End If
rowToGo = dgvAuftrag.CurrentRow
rtgIndex = rowToGo.Index + 1
If (rtgIndex >= dgvAuftrag.RowCount) Then rtgIndex = 0
Try
dgvAuftrag.Rows.Remove(rowToGo)
dgvAuftrag.Rows.Insert(rtgIndex, rowToGo)
Catch ex As Exception
IssueErrorMessage(ex)
End Try
End Sub
所有其他本地潜艇和功能都正常工作,只是这个表现很奇怪。任何想法如何解决/避免这个错误?
答案 0 :(得分:0)
这不是问题的解决方案,而是基于汉斯的消化的功能性解决方案。我引入了一个名为OKtoExit的全局布尔变量,它初始化为false。
private OKtoExit as boolean = false
然后我有一个新的FormClose事件处理程序来检查var。如果OKtoExit为false,则e.Cancel = true并且处理程序退出。常规的Exit函数(Save and Quit)将OKtoExit设置为true,任何其他代码都保持值不变。
Private Sub Current_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
If Not exitOK Then
e.Cancel = True
Exit Sub
End If
End Sub
正如我所说,这只是一种与正常运行的VB-Code具有相同效果的解决方法。如果有人能提供真正的解决方案,我将不胜感激!
答案 1 :(得分:0)
几个月后,我发现了问题的真正原因,我必须将所有信用都给Hans Passant:我在第一个将Dialog Result属性设置为Cancel的表格中有一个按钮。这是一个非常漂亮的按钮,应用程序中的许多其他按钮都是第一个按钮的副本,我刚刚修改了标签。因此,无论标签说什么,一旦用户点击其中一个表格,他们都会导致表格被关闭的不必要的行为......几个月之后我发现这只是偶然。再次感谢汉斯,我显然忽略了他的最后一丝暗示&#34;看看按钮的DialogResult属性。&#34;!