2015-09-27 55 views
-1

我的表单的Load事件处理程序检查文件夹是否可用(如果没有,则创建它),并且如果可用,则检查是否存在具有特定扩展名的文件。如果至少有一个带有该扩展名的文件,它将在MenuStrip上启用选项(称为QuickLoadMenuStripItem)。当文件夹中有文件时,不启用菜单栏项目

问题是当它在用户的文件夹中检查文件夹时,无论是否存在,它都不起作用。它通常执行代码,但它总是给出错误。代码如下:

Public Class BaseForm1 

    Private Sub BaseForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

     Dim ImportFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\Immortal Sins\Saves\" 
     If (Not Directory.Exists(ImportFolder)) Then 
      Directory.CreateDirectory(ImportFolder) 
      QuickStartToolStripMenuItem.Enabled = False 
     Else 
      Directory.GetFiles(ImportFolder) 
      For Each tempstring As String In ImportFolder 
       If tempstring.Contains(".isgsf") Then 
        QuickStartToolStripMenuItem.Enabled = True 
       Else 
        QuickStartToolStripMenuItem.Enabled = False 
       End If 
      Next 
     End If 
    End Sub 

End Class 

作为参考,它会检查C:\ Users \\ Immortal Sins \ Saves。这些文件具有.isgsf扩展名。

回答

0

你可能只是做:

Private Sub BaseForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Dim ImportFolder As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Immortal Sins\Saves\") 
    If (Not Directory.Exists(ImportFolder)) Then 
     Directory.CreateDirectory(ImportFolder) 
     QuickStartToolStripMenuItem.Enabled = False 
    Else 
     QuickStartToolStripMenuItem.Enabled = (Directory.GetFiles(ImportFolder, "*.isgsf").Length > 0) 
    End If 
End Sub 
+0

它的工作原理,但我不得不设置ImportFolder变量Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)+“\不朽的罪孽\保存\“,因为你的版本检查\不朽的罪孽\保存而不是C:\ Users \ \不朽的罪孽\保存。谢谢您的帮助。 – acemod13

+0

对不起,引用反斜杠,它应该工作。上面编辑的代码。 –

0

Directory.GetFiles(ImportFolder)

检索内容还有,你不检查文件扩展名,当你不是存储在ImportFolder文件列表。你正在检查文件是否包含某个字符串。

试试这个

Dim ImportFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\Immortal Sins\Saves\" 
If (Not Directory.Exists(ImportFolder)) Then 
    Directory.CreateDirectory(ImportFolder) 
    QuickStartToolStripMenuItem.Enabled = False 
Else 
    Dim fileEntries As String() = Directory.GetFiles(ImportFolder) 
    For Each file As String In fileEntries 
     Dim extension As String = System.IO.Path.GetExtension(file) 
     If extension = "isgsf" Then 
      QuickStartToolStripMenuItem.Enabled = True 
      Exit For 'Once a .isgsf is found the next files should't be checked 
     Else 
      QuickStartToolStripMenuItem.Enabled = False 
     End If 
    Next 
End If