Vb.net 在Visual Basic中对文本文件中的值求和

Vb.net 在Visual Basic中对文本文件中的值求和,vb.net,sum,text-files,Vb.net,Sum,Text Files,我正在编写一个Visual Basic程序,它读取名为profit.txt的文件的信息。我的表单有一个菜单条,设置如下:文件->打开文件->退出 我现在一直坚持的程序部分是: 当用户选择文件->打开文件时,将显示打开文件对话框。如果用户选择profit.txt之外的任何内容,则会出现一个消息框,告诉他们无法使用该文件,并且不会执行任何其他操作。如果用户选择了profit.txt,则对该文件中的所有值求和,但不显示总和 感谢下面的帮助,我可以打开文件,但不知道如何获得文件中所有元素的总和。在用户单

我正在编写一个Visual Basic程序,它读取名为profit.txt的文件的信息。我的表单有一个菜单条,设置如下:文件->打开文件->退出

我现在一直坚持的程序部分是:

当用户选择文件->打开文件时,将显示打开文件对话框。如果用户选择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

如有任何建议,将不胜感激

不要让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()将
行中的字符串转换为数值的简单示例:


显然,您必须对文件中的每一行执行此操作,因此这应该在
While
循环中发生。您需要在循环外声明
total
变量(以及using语句),不要忘记在某个地方输出该总数。

如果您总是打开同一个文件,为什么要让用户选择它?请尝试在文件中使用
作为file.ReadAllLines(menOpen.FileName)
中的字符串对每一行进行循环。(但请改用
file.ReadLines
;它是一个一次只读取一行的生成器。)对于桌面目录,请设置以下属性:
menOpen.InitialDirectory=Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
在调用ShowDialog()之前@LarsTech,我自己也很想知道,但因为这是一个类,我想我应该遵守我们给出的说明。谢谢大家的帮助。很好地理解了变量名。非常感谢!关于如何让程序获得文本文件中的值之和,有什么建议吗?使用Integer.Parse()将每行值转换为数值。在循环外声明一个变量来保存和,并在转换时累积值。您能告诉我应该在代码中的何处插入Integer.Parse()?我以前从未实际使用过它,因此不确定它是如何工作的。
    Dim value As Integer
    If Integer.TryParse(line, value) Then
        total = total + value
    End If