2016-10-08 1 views
1

J'ai deux formes. La première forme est utilisée pour afficher un ensemble d'enregistrements et la seconde forme est utilisée pour éditer l'enregistrement particulier. J'ai appelé le deuxième formulaire en utilisant frm.ShowDialog(). À l'intérieur de ce formulaire, j'ai un bouton pour appeler OpenFileDialog. Lorsque j'appuie sur OK ou sur Annuler, la seconde forme est éliminée avec OpenFileDialog. Je suis assez devrait que mon code soit correct, mais c'était le problème ShowDialog(). Quelqu'un a une idée sur ce problème?frm.showDialog dispose quand openFileDialog ferme [vb.net]

Voici comment j'ai appelé la deuxième forme à partir du premier formulaire pour afficher les informations.

Private Sub btnViewOrganizationEdit_Click(sender As Object, e As EventArgs) Handles btnViewOrganizationEdit.Click, dgvOrganization.DoubleClick 
    Dim selectedOrganization As New Organization 
    'check permission because double click 
    If dgvOrganization.RowCount > 0 Then 
     strOrganizationID = dgvOrganization.SelectedRows.Item(0).Cells(0).Value 
     selectedOrganization = helperOrganizationCKJ.getOrganizationByID(strOrganizationID) 
     frmEditOrganizationCKJ.objOrganization = selectedOrganization 
     frmEditOrganizationCKJ.ShowDialog() 
     iniGridView() 
    End If 
End Sub 

Voici comment j'ai appelé OpenFileDialog.

Private Sub btnEditOrganizationImage_Click(sender As Object, e As EventArgs) Handles btnEditOrganizationImage.Click 
    dlgImage.Filter = "" 
    Dim codecs() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders() 
    Dim sep As String = String.Empty 
    For Each c As ImageCodecInfo In codecs 
     Dim codecName As String = c.CodecName.Substring(8).Replace("Codec", "Files").Trim() 
     dlgImage.Filter = String.Format("{0}{1}{2} ({3})|{3}", dlgImage.Filter, sep, codecName, c.FilenameExtension) 
     sep = "|" 
    Next 
    dlgImage.FilterIndex = 5 

    If dlgImage.ShowDialog(Me) = DialogResult.OK Then 
     'Get the image name 
     Dim img = dlgImage.FileName 
     picEditOrganizationImage.Image = System.Drawing.Bitmap.FromFile(img) 
    End If 
End Sub 

Le frmEditOrganizationCKJ vient de se séparer de OpenFileDialog.

+0

Je ne comprends pas la question ou le problème. Un formulaire affiché comme ShowDialog n'est pas disposé lorsque vous le fermez, votre 'frmEditOrganizationCKJ' sortira hors de la portée quand il se fermera. Il semble aussi que vous avez vraiment 3 formes: la première forme, 'frmEditOrganizationCKJ' et' dlgImage' – Plutonix

+0

@Plutonix C'est en fait la boîte de dialogue parent est fermée avec la boîte de dialogue enfant. –

Répondre

0

Vous avez probablement copier/coller votre btnEditOrganizationImage d'un bouton qui a la propriété DialogResult définie sur quelque chose de différent que DialogResult.None.

Ceci déclenche l'action de fermeture pour votre formulaire modal et le correctif est très simple.
Définissez la DialogResult de propriété pour le btnEditOrganizationImage-DialogResult.None

De MSDN sur Button.DialogResult

Si le DialogResult pour cette propriété est définie sur autre chose que Aucun, et si la forme mère était affiché à travers la méthode ShowDialog , en cliquant sur le bouton ferme le formulaire parent sans avoir pour raccorder des événements. La propriété DialogResult du formulaire est alors définie sur le DialogResult du bouton lorsque le bouton est cliqué

+0

Oh je vois. Je copie à partir du formulaire racine qui a également un même bouton pour appeler un OpenFileDialog et le DialogResult est défini sur Annuler. –