0

更新以包含更多代码。

vb.net 2012 给我下面的代码三个警告,说未使用的变量。temp、filetype 和 inde 都被警告为未使用。

Private Sub Next_Image()
    ' TO Do -  is same, maybe make a function? Don't know if its worth it though
msgbox(My.Computer.FileSystem.GetFileInfo(img_picture.ImageLocation).Extension)
exit sub
    If changes = True Then
        If filesettings(2) = 0 Then
            If MessageBox.Show("Save Changes?", "Save Changes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                Dim filetype As System.Drawing.Imaging.ImageFormat
                If My.Computer.FileSystem.GetFileInfo(img_picture.ImageLocation).Extension.ToLower = ".png" Then
                    filetype = System.Drawing.Imaging.ImageFormat.Png
                ElseIf My.Computer.FileSystem.GetFileInfo(img_picture.ImageLocation).Extension.ToLower = ".jpg" OrElse My.Computer.FileSystem.GetFileInfo(img_picture.ImageLocation).Extension.ToLower = ".jpeg" Then
                    filetype = System.Drawing.Imaging.ImageFormat.Jpeg
                ElseIf My.Computer.FileSystem.GetFileInfo(img_picture.ImageLocation).Extension.ToLower = ".bmp" Then
                    filetype = System.Drawing.Imaging.ImageFormat.Bmp
                ElseIf My.Computer.FileSystem.GetFileInfo(img_picture.ImageLocation).Extension.ToLower = ".gif" Then
                    filetype = System.Drawing.Imaging.ImageFormat.Gif
                ElseIf My.Computer.FileSystem.GetFileInfo(img_picture.ImageLocation).Extension.ToLower = ".tiff" Then
                    filetype = System.Drawing.Imaging.ImageFormat.Tiff
                End If
                img_picture = Nothing
                imageadjust.Save(filename, filetype)
            End If
        End If
    End If
    If Not img_picture.ImageLocation = Nothing Then
        Dim inde As Integer = files.IndexOf(filename)
        If inde = files.Count - 1 Then
            img_picture.ImageLocation = files(0)
        Else
            img_picture.ImageLocation = files(inde + 1)
        End If
        filename = img_picture.ImageLocation
        Me.Text = filename.Substring(filename.LastIndexOf("\") + 1) & " - Picture Viewer"

        If filesettings(0) = 1 Then
            img_picture.SizeMode = PictureBoxSizeMode.CenterImage
        ElseIf filesettings(0) = 2 Then
            img_picture.SizeMode = PictureBoxSizeMode.Zoom
        Else
            Dim temp As New Bitmap(filename)
            Me.img_picture.Refresh()
            If temp.Width > Me.img_picture.Width OrElse temp.Height > Me.img_picture.Height Then
                Me.img_picture.SizeMode = PictureBoxSizeMode.Zoom
            Else
                Me.img_picture.SizeMode = PictureBoxSizeMode.CenterImage
            End If
            temp.Dispose()
        End If
    End If
End Sub

请原谅代码,我刚刚开始添加一些东西,所以有些可能是多余的。但是我不明白为什么 temp、inde 和 filetype 被声明为未使用。

4

3 回答 3

2

将文件类型设置为空(然后稍后对其进行测试)应该可以消除错误。

此外,使用 select case 语句应该稍微整理一下代码:

Dim filetype As System.Drawing.Imaging.ImageFormat
Select My.Computer.FileSystem.GetFileInfo(img_picture.ImageLocation).Extension.ToLower
    Case ".png"
        filetype = System.Drawing.Imaging.ImageFormat.Png
    Case ".jpg", ".jpeg"
        filetype = System.Drawing.Imaging.ImageFormat.Jpeg
    Case ".bmp"
        filetype = System.Drawing.Imaging.ImageFormat.Bmp
    Case ".gif"
        filetype = System.Drawing.Imaging.ImageFormat.Gif
    Case ".tif", ".tiff"
        filetype = System.Drawing.Imaging.ImageFormat.Tiff
    Case Else
        filetype = Nothing
End Select
If filetype IsNot Nothing Then
    img_picture = Nothing
    imageadjust.Save(filename, filetype)
End If
于 2013-04-23T03:33:50.007 回答
1
img_picture = Nothing

因此,您在此处将变量声明为 null,然后永远不要从您发布的内容中使用它。

你使用变量吗?就在 if 开关里面?无论哪种方式,这条线看起来都不需要。

此外,通过字符串值测试您的扩展只有两个问题......它可能无法正常工作,而且有点草率。如果您碰巧找到了一个不在您的情况下的文件/否则它将失败,并且还有其他可能性。

IMO,这确实是测试/检查的更好方法。尽管您必须针对 VB.Net 对其进行调整

于 2013-04-23T03:46:40.813 回答
1

添加所有代码后,您可以看到我的错误。我在检查 msgbox 中的值时添加了退出子命令并忘记将其删除。

感谢这两个答案提供更清晰的代码。

于 2013-04-23T05:07:09.243 回答