读书人

百思不得其解 这是咋回事? 小弟我没让

发布时间: 2012-03-17 19:06:28 作者: rapoo

百思不得其解 这是怎么回事? 我没让他关他怎么就关了呢?
代码如下

VB.NET code
    Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click        '退出        '检查有无更改        If DS.HasChanges Then            Select Case MessageBox.Show("您已对商品大类进行了更改,在退出前是否保存相关的修改?", "是否保存", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)                Case Windows.Forms.DialogResult.Yes                    Save()                    Me.Close()                Case Windows.Forms.DialogResult.No                    DS.Tables("商品大类").RejectChanges() '撤消变更                    Me.Close()                Case Windows.Forms.DialogResult.Cancel                    MessageBox.Show("点了取消")            End Select        End If    End Sub


就是点退出按钮时 弹出一个窗口询问一下...
可是我点了取消后... 窗口就自动关闭了? 这是为什么啊 百思不得其解啊

[解决办法]
把Button的IsCancel去掉
[解决办法]
VB.NET code
            e.Cancel =False
[解决办法]
在Xaml Designer中,选中Button,在Property中设置
将IsCancel去掉
[解决办法]
IsCancel是Button的属性,not e
[解决办法]
刚才估计写错了
VB.NET code
    Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click        '退出        '检查有无更改        If DS.HasChanges Then            Select Case MessageBox.Show("您已对商品大类进行了更改,在退出前是否保存相关的修改?", "是否保存", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)                Case Windows.Forms.DialogResult.Yes                    Save()                    Me.Close()                Case Windows.Forms.DialogResult.No                    DS.Tables("商品大类").RejectChanges() '撤消变更                    Me.Close()                Case Windows.Forms.DialogResult.Cancel                    [b]e.Cancel = True[/b]                    MessageBox.Show("点了取消")            End Select        End If    End Sub
[解决办法]
探讨
刚才估计写错了

VB.NET code


Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
'退出

'检查有无更改
If DS.HasChange……

[解决办法]
看看窗体的CancelButton属性有没有设置成btnCancel?
[解决办法]
看错了,重新来
仔细检查button所在form的CancelButton属性是否设置了,改为none就不会消失了
[解决办法]
问题看得太快了。。。 e.Cancel 是Me.FormClosing里面的事件参数

VB.NET code
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing        '退出        '检查有无更改        If DS.HasChanges Then            Select Case MessageBox.Show("您已对商品大类进行了更改,在退出前是否保存相关的修改?", "是否保存", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)                Case Windows.Forms.DialogResult.Yes                    Save()                    e.Cancel = False                Case Windows.Forms.DialogResult.No                    DS.Tables("商品大类").RejectChanges() '撤消变更                    e.Cancel = False                Case Windows.Forms.DialogResult.Cancel                    e.Cancel = True                    MessageBox.Show("点了取消")            End Select        End If    End Sub    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Me.Close()    End Sub 


[解决办法]
如下测试,未见异常。

Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
Select Case MessageBox.Show("您已对商品大类进行了更改,在退出前是否保存相关的修改?", "是否保存", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
Case Windows.Forms.DialogResult.Yes
Me.Close()
Case Windows.Forms.DialogResult.No
Me.Close()
Case Windows.Forms.DialogResult.Cancel
MessageBox.Show("点了取消")
End Select
End Sub

[解决办法]
你注释掉If 这个判断语句试试

VB.NET code
        'If DS.HasChanges Then            Select Case MessageBox.Show("您已对商品大类进行了更改,在退出前是否保存相关的修改?", "是否保存", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)                Case Windows.Forms.DialogResult.Yes                    Save()                    Me.Close()                Case Windows.Forms.DialogResult.No                    DS.Tables("商品大类").RejectChanges() '撤消变更                    Me.Close()                Case Windows.Forms.DialogResult.Cancel                    MessageBox.Show("点了取消")            End Select        'End If
[解决办法]
1,你判断出了问题,haschanges为false了,你断点进去看下。
2,你窗体哪里属性设置不对,我测试了下,你贴的代码是正确的。
[解决办法]
你这种情况,本来就应该写在Form的Closing事件里,同时用e.Handled=True来禁止窗口关闭。

在btnCancel的点击事件里,只需要写一句:Me.Close就好了。

读书人网 >VB Dotnet

热点推荐