не могу закрыть приложение, пока не открою showdialog - PullRequest
0 голосов
/ 24 июня 2018

Я использую VS2015, у меня небольшая форма с картинкой. Я не могу закрыть форму, пока не выберу изображение для поля для картинок. Как я могу закрыть форму, не выбирая изображение? Кажется, зависает.

Эта строка в Form1.Closed, кажется, вызывает проблему. Когда я его удаляю, все в порядке, за исключением того, что изображение не сохраняется, когда я перезагружаю программу.

My.Settings.SetCharImage = System.IO.Path.GetFullPath (OpenImage.FileName)

Imports System.ComponentModel
Public Class Form1
    Dim OpenImage As New OpenFileDialog

    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles CharImage1.Click

        OpenImage.Filter = "*.JPG;*.PNG;*.GIF|*.jpg;*.png;*.gif"
        If OpenImage.ShowDialog = DialogResult.OK Then
            CharImage1.Image = Image.FromFile(OpenImage.FileName)
        End If    
    End Sub

    Private Sub DisplayURL_Click(sender As Object, e As EventArgs) Handles DisplayURL.Click    
    End Sub

    Private Sub Form1_Closed(sender As Object, e As EventArgs) Handles Me.Closed    
        My.Settings.SetCharImage = System.IO.Path.GetFullPath(OpenImage.FileName)
        My.Settings.Save()
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        TextBox1.Text = My.Settings.SetCharImage
        CharImage1.ImageLocation = My.Settings.SetCharImage

    End Sub
End Class

1 Ответ

0 голосов
/ 26 июня 2018

Это то, что я понял. Кажется, эта строка

My.Settings.SetCharImage = System.IO.Path.GetFullPath(OpenImage.FileName)

Заставлял форму ждать, пока я открою OpenFileDialog и выберу файл, из-за чего форма зависла. Это новое решение захватывает имя и местоположение файла и записывает его в файл image.tag. Больше всего меня беспокоило то, что мне нужно заново сохранить строку местоположения изображения обратно в файл image.tag при загрузке, иначе он будет потерян.

Я думаю, что это правильно. Если кто-то лучше понимает, что происходит, дайте мне знать.

Public Class Form1

    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles CharImage1.Click
        ' On Click, set up a new File Dialog
        Dim OpenImage As New OpenFileDialog
        ' Set File Filters and Title
        OpenImage.Filter = "*.JPG;*.PNG;*.GIF|*.jpg;*.png;*.gif"
        OpenImage.Title = "Show Me the Money!"
        ' Open the Dialog, check if a suitable file we chosen
        If OpenImage.ShowDialog = DialogResult.OK Then
            CharImage1.Image = Image.FromFile(OpenImage.FileName())
            'Save the file name and path somewhere.  This case is in the Image.Tag
            CharImage1.Tag = OpenImage.FileName
            'Use previous Tag info when hitting Cancel button
        ElseIf DialogResult.Cancel Then
            CharImage1.ImageLocation = CharImage1.Tag

        End If

    End Sub

    Private Sub DisplayURL_Click(sender As Object, e As EventArgs) Handles DisplayURL.Click
        'TextBox2.Text = CharImage1.Tag

    End Sub


    Private Sub Form1_Closed(sender As Object, e As EventArgs) Handles Me.Closed
        'On Close, Save Settings with Tag Info
        My.Settings.TextBox2String = CharImage1.Tag
        My.Settings.Save()

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        'Load Tag info to Image.ImageLocation, and reload Tag info
        CharImage1.Tag = My.Settings.TextBox2String
        CharImage1.ImageLocation = CharImage1.Tag


    End Sub
End Class
...