2010-11-15 117 views
-1

嗨誰能告訴我,爲什麼以下劑量不工作:錯誤的代碼?

(PS我不想要的文件後點擊A按鈕只是在點擊複選框追加

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged 
    Dim FILE_NAME As String = "C:\RXF\log.txt" 

    'Adding items for AutoCAD 2006... 
    If CheckBox1.CheckState = CheckState.Checked Then 
     Dim objWriter As New System.IO.StreamWriter(FILE_NAME, True) 
     objWriter.WriteLine("module: 4FNV-67-5H") 
     objWriter.Close() 
    End If 
End Sub 

末級

+2

更詳細地解釋「不起作用」。 – 2010-11-15 12:02:26

+0

沒有錯誤消息沒有問題,只是要附加的文件不附加在複選框被檢查(檢查如果txt文件存在和路徑是正確的,這是好的) – tom 2010-11-15 12:04:19

+0

@tom:你單步通過代碼來驗證「If」語句中的條件評估爲「True」? – 2010-11-15 12:07:01

回答

-1

。不可重現,即使您的確切代碼已發佈這對我來說非常好,在指定位置創建文本文件(如果文件不存在並將指定文本附加到文件末尾)

我建議的唯一的事情就是將StreamWriter對象封裝在Using statement中,以確保它的方法總是被調用,即使拋出了異常(當你正在執行磁盤I/O時更可能)。因此,現有的代碼會簡單地改變爲:

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged 
    Dim FILE_NAME As String = "C:\RXF\log.txt" 

    ''#Adding items for AutoCAD 2006... 
    If CheckBox1.CheckState = CheckState.Checked Then 
     Using objWriter as New System.IO.StreamWriter(FILE_NAME, True) 
      objWriter.WriteLine("module: 4FNV-67-5H") 
      objWriter.Close() 
     End Using 
    End If 
End Sub 

另外,如果你預計這種方法獲取調用了很多(即用戶點擊並unclicking和點擊複選框反覆),你可能會考慮創建StreamWriter對象一次並將其保存爲私有類級變量,而不是在每次調用該方法時創建並處理它。然後,只要你的班級(大概是包含表格)被處置,你就必須確保你處理它。