2014-04-03 54 views
1

我有一系列測試,當用戶完成時,分數存儲在變量中並寫入文件。在我的程序中,每個用戶都有一個進度屏幕,它應該顯示標籤中的所有測試成績。運行程序時標籤不顯示文字

我已經使用這個代碼顯示在標籤中得分:lblTopic1Score.Text = Topic1Score

然而,當我運行系統並走上進步形成標籤是空白。誰能幫忙?

代碼進度形式:

Private Sub StProgress_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    lblTopic1Score.Text = Topic1Score 
    lblTotalScore.Text = TotalScore` 

    lblStName.Text = namest 
    LblStSurname.Text = surnamest 

End Sub 

模塊創建存儲公共變量Public Topic1Score As String

這是從測試本身

If answers(i) = questions(i, 4) And FileOpenStatusTS = False Then 

    Topic1Score += 1 
    TotalScore += 1 

End If 

If yearst = "12" And classst = "A" Then 
    FileOpen(1, FileName12A1, OpenMode.Append) 
    FileOpenStatus12A1 = True 

    'Once all the details have been entered and checked, then they are written to the Teacher accounts text file' 
    WriteLine(1, Username, Topic1Score, TotalScore) 
    FileClose(1) 
End If 
+0

確保您的標籤的前部顏色與後部顏色不同。這是一個遠射,但仍值得檢查。 – Crono

+0

另外,你爲什麼要增加一個'String'變量? – Crono

+0

當您在該行代碼上放置[斷點](http://msdn.microsoft.com/zh-cn/library/ktf38f66(v = vs.90).aspx)並從Visual Studio運行它時,當它擊中那行代碼時,Topic1Score的值是什麼?當你進入下一步時,調試器是否正確顯示標籤的文本,並在稍後清除?在調試時設置斷點並逐步執行代碼是找到答案的最佳選擇。 – David

回答

0

顯然是一個代碼片段的時候你表單加載Topic1Score可以爲null或空。

StProgress_Load事件處理程序的第一行添加Debug.Assert(Not String.IsNullOrWhiteSpace(Topic1Score))

Private Sub StProgress_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Debug.Assert(Not String.IsNullOrWhiteSpace(Topic1Score)) 

    lblTopic1Score.Text = Topic1Score 
    lblTotalScore.Text = TotalScore 

    lblStName.Text = namest 
    LblStSurname.Text = surnamest 
End Sub 

每當值爲空,或者只包含空格,所以你可以確保它不降你的雷達下面這將停止執行,當你正在調試。

請注意,Debug.Assert未在發佈版本中編譯,因此您不必擔心性能問題。把它看作是一個可以幫助你調試的簡單工具。

此外,這個變量確實不應該是String類型,而是Integer。如果你需要它作爲一個字符串的一些操作,你可以做Topic1Score.ToString()

+0

對不起,作爲一個白癡,但你究竟是什麼意思,甚至處理程序的第一行,我找不到它。 – user3167227

+0

@ user3167227我編輯了我的答案,使其更清晰。 – Crono