2013-08-06 55 views
0

這聽起來很簡單,但我已經搜索,似乎無法找到一種方法來打開一個日誌文件,用戶剛從我的窗體創建應用程序。該文件退出,我只是想創建它之後打開它。打開,啓動或顯示文件供用戶閱讀或寫入vb.net

我有一個Dim path As String = TextBox1.Text一旦用戶名並點擊其savefiledialog好,我有一個MsgBox,上面寫着「完成」,當你點擊OK我已經試過這

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 
+1

FileOpen不顯示任何東西給你,只是打開文件,現在取決於你閱讀內容並在多行文本框中顯示 – Steve

回答

1

不要使用舊的VB6方法。他們仍然出於兼容性原因,新代碼應該使用System.IO命名空間中更強大的方法。

然而,正如評論所說,的FileOpen不顯示你什麼,只是打開文件

你coud寫

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) 
+0

謝謝,我知道這很容易。 – Scheballs

1

要獲得相同的行爲,如果用戶雙擊它,只是使用System.Diagnostics.Process,並通過文件名是Start方法:

Process.Start(path) 

這將使用任何默認應用程序打開文件是基於擴展名的文件名,就像Explorer在雙擊它時所做的一樣。

相關問題