如何在不使用FormClosing事件的情况下阻止表单关闭

时间:2014-04-12 03:19:08

标签: vb.net forms formclosing

我最近开始使用Visual Studio 2010开始学习VB.net,到目前为止,我做得很好,但是我已经在这个问题上坚持了好几个小时了。 google和stack overflow搜索我来找你。

我有2个表单,一个用于放置人员数据并将其转到数据库,另一个用于允许您根据文档类型和文档编号进行搜索,我们将其称为Form1和Form2。事实是,当用户在表单2上按OK并且文档或文档类型为空时,msgbox会显示告诉他们填充文本框,但表单在此之后关闭,所以我想要做的是阻止表单关闭用户按OK,任何字段为空。

我在form2上的OK按钮点击事件(我希望阻止表单关闭):

Private Sub cmd_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_ok.Click

    If Me.txt_dni.Text = "" Then
        MsgBox("Numero Documento vacio", vbOKOnly + vbCritical, "Atencion")
        Me.txt_dni.Focus()
        Exit Sub
    End If

    If Me.cmb_tdoc.SelectedIndex = -1 Then
        MsgBox("Tipo de Documento vacio", vbOKOnly + vbCritical, "Atencion")
        Me.cmb_tdoc.Focus()
        Exit Sub
    End If

End Sub

我从Form2获取其父级的值,form1;当我需要使用文档类型和文档编号查看datagridview上的某个人时,我调用此函数:

Private Function abrir_form2(ByRef rdoc2 As Integer, ByRef rtdoc2 As Integer)
        Dim dialog As Form2
        Dim doc2 As Integer
        Dim tdoc2 As Integer

dialog = New Form2() Dim result As DialogResult = dialog.ShowDialog(Me) doc2 = dialog.doc2 tdoc2 = dialog.tdoc2 rdoc2 = doc2 rtdoc2 = tdoc2 Return vbNull End Function

两种形式:http://i.imgur.com/n1EwfiW.png

也许有另一种方法可以做到这一点?还有其他方法可以解决这个问题吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我的猜测是,DialogResult的{​​{1}}属性设置为Button以外的其他属性。在这种情况下,单击None会将相同的值分配给表单的Button属性。如果使用DialogResult显示表单,则设置其ShowDialog属性将关闭它。如果您不想关闭时间,请点击DialogResult,然后不要设置其Button属性。相反,当且仅当您要关闭表单时,才在DialogResult的{​​{1}}事件中明确设置表单的DialogResult属性。