我正在使用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
答案 0 :(得分: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