vb2013退出本地子关闭表格

时间:2016-01-11 10:50:33

标签: visual-studio-2013 basic

我有一个本地子,允许用户移动一行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

所有其他本地潜艇和功能都正常工作,只是这个表现很奇怪。任何想法如何解决/避免这个错误?

2 个答案:

答案 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;!