【问题标题】:VB.Net Save button not adding data to text fileVB.Net 保存按钮未将数据添加到文本文件
【发布时间】:2019-01-23 10:26:12
【问题描述】:

我还是 VB.Net 的新手,并且已经坚持了一个多小时。我正在尝试创建一个库存管理系统,其中会打开一个表单供用户输入 pc 规格,当我单击保存时,将保存到文本文件,以便将其读入 Inventory Tracker 屏幕。每个文本框都被禁用并在更新时附加文本。

目前什么都没有发生,我已经在与项目相同的目录中创建了文本文件。为什么是这样?

我还尝试在文本文件中放置一条测试消息以显示在跟踪器文本框中,这就是我保存规格时会发生的情况,但是没有出现任何消​​息?

frmItemEntry.vb

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click

    Dim objMyStreamReader As System.IO.StreamReader
    Dim objMyStreamWriter As System.IO.StreamWriter = System.IO.File.CreateText("inventory.txt")

    Dim strInventory As String

    objMyStreamWriter.WriteLine(txtManufacturerEntry)
    objMyStreamWriter.WriteLine(txtProcessorEntry)
    objMyStreamWriter.WriteLine(txtVideoEntry)
    objMyStreamWriter.WriteLine(txtFormEntry)
    objMyStreamWriter.WriteLine(txtRamEntry)
    objMyStreamWriter.WriteLine(txtVramEntry)
    objMyStreamWriter.WriteLine(txtHdEntry)
    objMyStreamWriter.WriteLine(chkWirelessEntry)
    objMyStreamWriter.Close()

    Me.Close()

End Sub

frmTracker.vb

Private Sub txtManufacturer_TextChanged(sender As Object, e As EventArgs) Handles txtManufacturer.TextChanged
    Dim streamReader As New System.IO.StreamReader("inventory.txt")
    Dim strInventory As String
    streamReader = System.IO.File.OpenText("inventory.txt")
    strInventory = streamReader.ReadLine
    txtManufacturer.AppendText(strInventory)
End Sub

【问题讨论】:

  • 你做了什么调试?您是否逐行浏览代码以查看发生了什么以及当时的变量值是什么?您的事件处理程序肯定在运行吗?您是否收到任何错误或异常?如果您能对我们说的最好的结果是“什么都没有发生”,那么通常这意味着您还没有完全调查这个问题。
  • 您能否澄清一下您期望发生的事情不会发生?目前您正在做三件事:1) 将数据写入文件,2) 从该文件中读取数据,以及 3) 在应用程序中输出所述数据 - 其中哪一项不起作用?
  • 您确定查看的是正确的文件吗?当您在 VS 中构建和运行 .NET 项目时,它会将代码编译为项目下的子文件夹中的二进制格式(通常是 bin\Debug,在您处于调试模式时),并在那里复制所有相关的人工制品,例如文本文件 - 类似于将最终的可执行文件部署到它将真正运行的地方。这成为程序运行时的根目录。我建议检查它是否真的在更新 that 子目录中的文件副本,而不是在您的源代码所在的文件夹中。
  • 您可以通过仅将文本框的 Text 属性保存到文件中来做到这一点,而不是整个文本框对象。一个文本框consists of a lot more 而不仅仅是写在框中的文本!
  • 你应该使用txtManufacturerEntry.Text等等

标签: .net vb.net visual-studio-debugging


【解决方案1】:

您确定查看的是正确的文件吗?

当您在 VS 中构建和运行 .NET 项目时,它会将代码编译到您项目下的子文件夹中(通常是 bin\Debug,在您处于调试模式时),并在那里复制所有相关的人工制品,例如文本文件 - 类似于将最终的可执行文件部署到它将真正运行的地方。这成为程序运行时的根目录。

我希望它实际上是在更新该子目录中的文件副本,而不是在您的源代码所在的文件夹中。

【讨论】:

  • 作为快速跟进,我可以对“Dim objMyStreamWriter As System.IO.StreamWriter = System.IO.File.CreateText("inventory.txt")”行进行哪些更改以更新带有附加条目的当前文本文件,而不是清除整个文件。
  • @Devin 我不想听起来刻薄,但这确实是一个非常常见且微不足道的要求,您可以google easily。我想认为不需要我(或其他任何人)代表您去查找它。如您所见,您远不是第一个想要这样做的人......
猜你喜欢
  • 2015-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 2021-05-26
  • 2021-08-18
  • 1970-01-01
相关资源
最近更新 更多