0

这听起来很简单,但我已经搜索过了,似乎找不到打开用户刚刚从我的 Windows 窗体应用程序创建的日志文件的方法。文件退出我只想在创建后打开它。

我有一个Dim path As String = TextBox1.Text用户名并在 savefiledialog 上单击“确定”后,我有一个显示“完成”的 msgbox,当您点击“确定”时,我已经尝试过

FileOpen(FreeFile, path, OpenMode.Input)但什么也没发生。我只是希望它打开日志并将其显示给用户,以便他们可以再次编辑或保存它或其他任何东西。

这是我得到上述代码的地方。 http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.filesystem.fileopen.aspx

搜索很困难,因为每个人都试图“打开”一个文件并在运行时处理它。我只是想Show通过它来创建一个文件,Launching就像有人双击它一样。这是整个导出按钮单击子。它基本上将列表框项目写入文件。

Private Sub btnExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExport.Click

    Dim sfd As New SaveFileDialog
    Dim path As String = TextBox1.Text
    Dim arypath() As String = Split(TextBox1.Text, "\")
    Dim pathDate As String
    Dim foldername As String
    foldername = arypath(arypath.Length - 1)

    pathDate = Now.ToString("yyyy-MM-dd") & "_" & Now.ToString("hh;mm")
    sfd.FileName = "FileScannerResults " & Chr(39) & foldername & Chr(39) & " " & pathDate

    sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
    sfd.Filter = "Text files (*.txt)|*.txt|CSV Files (*.csv)|*.csv"
    sfd.ShowDialog()

    path = sfd.FileName

    Using SW As New IO.StreamWriter(path)

        If CkbxFolder.Checked = True Then
            SW.WriteLine("Folders")
            For Each itm As String In ListBox1.Items
                SW.WriteLine(itm)
            Next
        End If

        If CkbxFiles.Checked = True Then
            SW.WriteLine("Files")
            For Each itm As String In ListBox2.Items
                SW.WriteLine(itm)
            Next
        End If

    End Using
    MsgBox("Done...")
    FileOpen(FreeFile, path, OpenMode.Input) 'Why can't I open a file for you...

End Sub
4

2 回答 2

1

不要使用旧的 VB6 方法。出于兼容性原因,它们仍然存在,新代码应该使用 System.IO 命名空间中更强大的方法。

但是,正如评论中所说, FileOpen 不会为您显示任何内容,只是打开文件

你可以写

Using  sr = new StreamReader(path)
    Dim line = sr.ReadLine()
    if !string.IsNullOrEmpty(line) Then
       textBoxForLog.AppendText(line)
    End If
End Using

或者简单地说(如果文件不是太大)

Dim myLogText = File.ReadAllText(path)
textBoxForLog.Text = myLogText

作为替代方案,您可以要求操作系统运行与文件扩展名关联的程序并为您显示文件

Process.Start(path)
于 2013-08-06T20:11:58.650 回答
1

要获得与用户双击它相同的行为,只需使用System.Diagnostics.Process,并将文件名传递给它的Start方法:

Process.Start(path)

这将使用基于文件扩展名的默认应用程序打开文件,就像资源管理器在双击它时所做的那样。

于 2013-08-06T20:21:21.650 回答