我正在编写一个Visual Basic程序,它读取名为profit.txt的文件的信息。我的表单有一个菜单条,其设置类似于File-> Open File-> Exit
我现在坚持的程序部分是:
当用户选择文件 - >打开文件时,会出现一个打开的文件对话框。如果用户选择除profit.txt之外的任何内容,则会出现一个消息框,告诉他们不能使用该文件,也不会执行任何其他操作。如果用户确实选择了profit.txt,那么对该文件中的所有值求和,但不显示总和。
感谢下面的帮助,我可以打开文件,但不知道如何获取文件中所有元素的总和。在用户单击文本框中的某些单选按钮和复选框以及输入金额之前,实际上不会显示总和。然后,程序使用来自用户的信息,通过从文件中的值总和中减去给定的金额来获得最终利润。
这是我最近的代码。
Option Strict On
Imports System.IO
Public Class Form1
Private Sub menOpen_Click(sender As Object, e As EventArgs) Handles menOpen.Click
Dim ofd As New OpenFileDialog
ofd.Filter = "text files |*.txt|All Files|*.*"
ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
Dim selectedFileName As String = System.IO.Path.GetFileName(ofd.FileName)
If selectedFileName.ToLower = "profit.txt" Then
Dim line As String
Using reader As New StreamReader(ofd.OpenFile)
While Not reader.EndOfStream
line = reader.ReadLine
Console.WriteLine(line)
End While
End Using
Else
MessageBox.Show("You cannot use that file!")
End If
End If
End Sub
Private Sub menExit_Click(sender As Object, e As EventArgs) Handles menExit.Click
Me.Close()
End Sub
End Class
任何建议都将不胜感激。
答案 0 :(得分:2)
不要让您的OpenFileDialog与您的菜单名称相同。您可以使用System.IO.Path.GetFileName()来仅检索文件名部分(无路径)。然后将其与您的硬编码值进行比较:
Private Sub menOpen_Click(sender As Object, e As EventArgs) Handles menOpen.Click
Dim OFD As New OpenFileDialog
OFD.Filter = "text files |*.txt|All Files|*.*"
If OFD.ShowDialog() = Windows.Forms.DialogResult.OK Then
Dim selectedFileName As String = System.IO.Path.GetFileName(OFD.FileName)
If selectedFileName.ToLower = "profit.txt" Then
Dim line As String
Using reader As New StreamReader(OFD.OpenFile)
While Not reader.EndOfStream
line = reader.ReadLine
Console.WriteLine(line)
End While
End Using
Else
MessageBox.Show("You cannot use that file!")
End If
End If
End Sub
以下是使用Integer.Parse()将line
中的字符串转换为数值的简单示例:
Dim value As Integer
If Integer.TryParse(line, value) Then
total = total + value
End If
显然你必须为文件中的每个“行”执行此操作,因此这应该发生在内部 While
循环中。你需要在循环之外声明total
变量(以及using语句),并且不要忘记在某处输出该总数。