【问题标题】:Error with code?代码错误?
【发布时间】:2010-11-15 20:27:12
【问题描述】:

您好,谁能告诉我为什么以下剂量不起作用:

(p.s 我不希望在单击复选框时单击按钮时附加文件。

    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

结束类

【问题讨论】:

  • 更详细地解释“不起作用”。
  • 没有错误信息没有问题,只是要附加的文件在选中复选框时没有附加(检查txt文件是否存在并且路径是否正确,没关系)
  • @tom:您是否单步执行了代码来验证If 语句中的条件计算结果是否为True
  • 是的,这行得通,但我说的是真的,因为我想附加文件而不是覆盖它,这就是现在发生的事情
  • 现在接缝只需一秒钟???

标签: vb.net checkbox


【解决方案1】:

不可重现,即使您发布的确切代码也是如此。这对我来说非常有效,如果一个文本文件不存在,则在指定位置创建一个文本文件并将指定文本附加到末尾文件。

我唯一建议的是将您的 StreamWriter 对象包装在 Using statement 中,以确保始终调用其 Dispose 方法,即使抛出异常也是如此(当您这样做时更有可能磁盘 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

此外,如果您预计此方法会被多次调用(即,用户单击和取消单击并反复单击复选框),您可以考虑创建 StreamWriter 对象一次并将其保存为一个私有的类级变量,而不是每次调用方法时都创建和处理它。然后,您只需确保在您的类(可能是包含表单)被处置时处置它。

【讨论】:

    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    相关资源
    最近更新 更多