在我打开showdialog之前无法关闭应用程序

时间:2018-06-24 18:16:39

标签: picturebox 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 个答案:

答案 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
相关问题