Как предотвратить закрытие формы без использования события FormClosing

Я недавно начал изучать VB.net с Visual Studio 2010, и пока у меня все отлично, но я застрял с этой проблемой уже несколько часов, и после многих страниц поиска в Google и переполнения стека я пришел к вам .

У меня есть 2 формы: одна, в которую вы помещаете данные о людях, и она попадает в базу данных, а другая, которая позволяет вам выполнять поиск по типу документа и номеру документа, назовем их Form1 и Form2. Дело в том, что когда пользователь нажимает OK в форме 2, а документ или тип документа пусты, в поле msgbox отображается сообщение о необходимости заполнения текстового поля, но после этого форма закрывается, поэтому я хочу предотвратить закрытие формы, если пользователь нажимает ОК, и любое поле остается пустым.

Мое событие нажатия кнопки OK в форме2 (где я хотел бы предотвратить закрытие формы):

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

Может есть другой способ сделать это? Есть ли другой способ решить эту проблему?

Заранее спасибо!


person Salva    schedule 12.04.2014    source источник
comment
Если вы на самом деле ничего не возвращаете, просто сделайте это Sub, а не Function.   -  person OneFineDay    schedule 12.04.2014


Ответы (1)


Я предполагаю, что у вас есть свойство DialogResult этого Button, установленное не на None. В этом случае щелчок по этому Button присвоит то же значение свойству DialogResult формы. Если форма отображалась с использованием ShowDialog, установка ее свойства DialogResult закроет ее. Если вы не хотите закрывать форму каждый при нажатии Button, не устанавливайте его свойство DialogResult. Вместо этого установите свойство DialogResult формы явно в событии Click для Button тогда и только тогда, когда вы хотите закрыть форму.

person jmcilhinney    schedule 12.04.2014