如果尽管双方相同,但语句仍无法正常工作

时间:2018-09-07 16:00:42

标签: vb.net

Dim FormOpen As String = My.Computer.FileSystem.ReadAllText("C:\AndTime\OpenForm1")
TextBox1.Text = FormOpen
If FormOpen = "1" Then
    Form1.Show()
End If

我放入“ TextBox1.Text = FormOpen”来测试文件是否正确读取,即文本框显示“ 1”,在“ 1”之前或之后没有任何空格或任何其他导管。

因此,问题一定与if语句有关

2 个答案:

答案 0 :(得分:0)

Dim FormOpen As String = My.Computer.FileSystem.ReadAllText("C:\AndTime\OpenForm1")
TextBox1.Text = FormOpen
If FormOpen = "1" Then
    Form1.Show()
End If

ReadAllText()的参数必须是完整的路径和文件名。如果文件具有扩展名,则必须存在该扩展名。如果文件为OpenForm1.txt,并且位于C:驱动器上名为“ AndTime”的目录中,则字符串必须为"C:\AndTime\OpenForm1.txt"

 If FormOpen = "1" Then

仅当文件的全部内容为单个字符“ 1”时,才为真。如果文件包含更多或更少的字符或非1的字符,则它将不匹配。

生活中我可以保证的几件事之一是“ =”没有损坏。如果返回“ false”,则唯一的原因是两件事不相等。

https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/operators-and-expressions/comparison-operators

此外,作为一般的编程说明:“使用有意义的标识符”。 “ FormOpen”听起来像是事件或属性,而不是文件内容,并且对任何读取您的代码的人都造成混淆。

例如,您可以将其命名为FileContents,这样可以使其含义明确。

答案 1 :(得分:-1)

您未指定编码。因此它默认使用UTF-8,但是如果使用记事本之类的东西来创建它,则编码可能会关闭。

https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualbasic.fileio.filesystem.readalltext

尝试使用ASCII,如上面链接中的示例所示,看看是否可以解决问题。如果是这样,那么只需确保您使用相同的编码来读取用于写入文件的文件即可。