none
VB.NET 開啟路徑問題 RRS feed

  • 問題

  • 如果TXT名稱是可變的,我加入一個TextBox,讓我隨時更改,TextBox上都已經打了\1.txt,為什麼執行時會發生錯誤,應該如何更改程式碼?

    2019年8月20日 下午 04:20

解答

  • 宣告區不能放控制項物件 TextBox3

    因為執行宣告區時,TextBox3 還沒被生成。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2019年8月21日 下午 01:36
  • 當你這樣寫

    Public Class Form1
    
        Private t As String = TextBox1.Text
    
    
    End Class

    事實上是這樣執行的

    Public Class Form1
    
        Private t As String
    
        Sub New()
    
            t = TextBox1.Text
            InitializeComponent()
    
        End Sub
    
    End Class
    

    然而很不幸的, TextBox1 = new TextBox() 這個建構呼叫是在 InitializeComponent() 方法中,也就是 TextBox1 所指向的執行個體根本還沒有產生你就呼叫他了, 這等於是 Nothing.Text ,所以就出現 nullreferenceexception (無效參考的意思)

    根據程式的執行順序,你也應該在 Button3_Click 方法內設定路徑才是對的,也就是在這個方法的第一行放入

    Dim A As String = Application.StartupPath & TextBox3.Text


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    2019年8月21日 下午 05:11
    版主

所有回覆

  • 附上開發環境或是偵錯發生的訊息會比較好猜。

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    2019年8月20日 下午 10:34
    版主
  • 您可以確定一下您的應用程式所在的資料夾中是否有名稱為1.txt的檔案
    2019年8月21日 上午 12:37
  • 附上開發環境或是偵錯發生的訊息會比較好猜。

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/


    2019年8月21日 上午 09:10
  • 您可以確定一下您的應用程式所在的資料夾中是否有名稱為1.txt的檔案
    資料夾中有名稱為1.txt的檔案
    2019年8月21日 上午 09:10
  • Private A As String = Application.StartupPath & TextBox3.Text
    
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    
            Try
                ListView1.Items.Clear()
                Dim mycoolfilelines() As String = IO.File.ReadAllLines(A)
                For Each line As String In mycoolfilelines
                    Dim lineArray() As String = line.Split("#")
                    Dim newitem As New ListViewItem(lineArray(0))
                    newitem.SubItems.Add(lineArray(1))
                    newitem.SubItems.Add(lineArray(2))
                    newitem.SubItems.Add(lineArray(3))
                    ListView1.Items.Add(newitem)
                Next
            Catch ex As Exception
            End Try
        End Sub

    為什麼執行時會發生錯誤,應該如何更改程式碼?

       Private A As String = Application.StartupPath & "\1.txt"  '就沒有問題

      Private A As String = Application.StartupPath & TextBox3.Text    '為什麼加個TextBox,就不可以?TextBox上都打了\1.txt


    • 已編輯 投立 2019年8月21日 上午 09:15
    2019年8月21日 上午 09:12
  • 宣告區不能放控制項物件 TextBox3

    因為執行宣告區時,TextBox3 還沒被生成。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2019年8月21日 下午 01:36
  • 當你這樣寫

    Public Class Form1
    
        Private t As String = TextBox1.Text
    
    
    End Class

    事實上是這樣執行的

    Public Class Form1
    
        Private t As String
    
        Sub New()
    
            t = TextBox1.Text
            InitializeComponent()
    
        End Sub
    
    End Class
    

    然而很不幸的, TextBox1 = new TextBox() 這個建構呼叫是在 InitializeComponent() 方法中,也就是 TextBox1 所指向的執行個體根本還沒有產生你就呼叫他了, 這等於是 Nothing.Text ,所以就出現 nullreferenceexception (無效參考的意思)

    根據程式的執行順序,你也應該在 Button3_Click 方法內設定路徑才是對的,也就是在這個方法的第一行放入

    Dim A As String = Application.StartupPath & TextBox3.Text


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    2019年8月21日 下午 05:11
    版主