2010-11-15 114 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对象一次并将其保存为私有类级变量,而不是在每次调用该方法时创建并处理它。然后,只要你的班级(大概是包含表格)被处置,你就必须确保你处理它。