Не могу закрыть приложение, пока я не открою showdialog
Я использую 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 ответ
Это то, что я понял. Похоже эта строчка
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