将点击次数保存到文件

时间:2015-03-24 09:38:38

标签: vb.net

我几天前被问到如何将程序中每个按钮所做的点击次数保存到一个小文件中,以便跟踪最常用的内容。从很久以前我开始涉足视觉基础,我说我会在这里提出这个问题,所以就这样了。

Button1-Button5有5个按钮标签。单击按钮时,它应在file.txt中查找正确的值,并为该值添加+1。该文件的结构如下。

  1. Button1 = 0
  2. Button2 = 0
  3. Button3 = 0
  4. Button4 = 0
  5. Button5 = 0
  6. 因此,当点击button1时,它应该打开file.txt,查找包含Button1的行,并为该值添加+1并关闭文件。

    我已经尝试过寻找某种类型的教程,但是还没有找到它,所以我在Stackoverflow上请求大脑集体提供一些指导。

    提前致谢。

3 个答案:

答案 0 :(得分:0)

  1. 创建vb winform应用程序
  2. 拖动表单5按钮(Button1,Button2,...等)
  3. 复制:
  4. Imports System.IO.File
    Imports System.IO.Path
    进口System.IO
    进口System.Text

     Public Class Form1
    
    Dim line() As String
    Dim strbild As StringBuilder
    Dim arr() As String
    Dim i As Integer
    Dim pathAndFile As String
    Dim addLine As System.IO.StreamWriter
    
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim fileName As String = "myfile.txt"
        Dim appPath As String = My.Application.Info.DirectoryPath
        pathAndFile = Path.Combine(appPath, fileName)
    
        If System.IO.File.Exists(pathAndFile) Then
            line = File.ReadAllLines(pathAndFile)
    
        Else
            Dim addLineToFile = System.IO.File.CreateText(pathAndFile)      'Create an empty txt file
            Dim countButtons As Integer = 5                         'add lines with your desired number of buttons
            For i = 1 To countButtons
                addLineToFile.Write("Button" & i & " = 0" & vbNewLine)
            Next
    
            addLineToFile.Dispose()                                       '  and close file
        End If
    
    
    
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        writeToFile(1)
    End Sub
    
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        writeToFile(2)
    End Sub
    
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        writeToFile(3)
    End Sub
    
    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        writeToFile(4)
    End Sub
    
    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        writeToFile(5)
    End Sub
    
    Public Sub writeToFile(buttonId As Integer)
        Dim tmpButton As String = "Button" & buttonId
        strbild = New StringBuilder
    
        line = File.ReadAllLines(pathAndFile)
        i = 0
        For Each lineToedit As String In line
    
            If lineToedit.Contains(tmpButton) Then
                Dim lineSplited = lineToedit.Split
                Dim newVal = addCount(CInt(lineSplited.Last()))
                'lineToedit.Replace(lineSplited.Last, newVal)
                lineToedit = lineToedit.Replace(lineToedit.Last, newVal)
                line(i) = lineToedit
    
            End If
            i = i + 1
        Next
    
        strbild = New StringBuilder
        'putting together all the reversed word
        For j = 0 To line.GetUpperBound(0)
            strbild.Append(line(j))
            strbild.Append(vbNewLine)
        Next
    
        ' writing to original file
        File.WriteAllText(pathAndFile, strbild.ToString())
    
    
    End Sub
    
    ' Reverse Function
    Public Function ReverseString(ByRef strToReverse As String) As String
        Dim result As String = ""
        For i As Integer = 0 To strToReverse.Length - 1
            result += strToReverse(strToReverse.Length - 1 - i)
        Next
        Return result
    End Function
    
    Public Function addCount(ByVal arr As Integer) As Integer
        Return arr + 1
    End Function
    
    End Class
    

    玩得开心! :)
    CristiC777

答案 1 :(得分:0)

在vs2013 上试试这个 更改条件

line = File.ReadAllLines(pathAndFile)
    i = 0
    For Each lineToedit As String In line
        If InStr(1, lineToedit, tmpButton) > 0 Then
            'If lineToedit.Contains(tmpButton) = True Then
            Dim lineSplited = lineToedit.Split
            Dim newVal = addCount(CInt(lineSplited.Last()))

            lineToedit = lineToedit.Replace(lineToedit.Last, newVal)
            line(i) = lineToedit
        End If
        i = i + 1
    Next

答案 2 :(得分:0)

首先删除文件
新版本..

Imports System.IO.File
Imports System.IO.Path
Imports System.IO
Imports System.Text

Public Class Form1

Dim line() As String
Dim strbild As StringBuilder
Dim arr() As String
Dim i As Integer
Dim pathAndFile As String
Dim addLine As System.IO.StreamWriter

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim fileName As String = "myfile.txt"
    Dim appPath As String = My.Application.Info.DirectoryPath
    pathAndFile = Path.Combine(appPath, fileName)

    If System.IO.File.Exists(pathAndFile) Then
        'line = File.ReadAllLines(pathAndFile)

    Else
        Dim addLineToFile = System.IO.File.CreateText(pathAndFile)      'Create an empty txt file
        Dim countButtons As Integer = 5                         'add lines with your desired number of buttons
        For i = 1 To countButtons
            addLineToFile.Write("Button" & i & " = 0" & vbNewLine)
        Next

        addLineToFile.Dispose()                                       '  and close file
    End If

End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    writeToFile(1)
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    writeToFile(2)
End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    writeToFile(3)
End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    writeToFile(4)
End Sub

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    writeToFile(5)
End Sub

Public Sub writeToFile(buttonId As Integer)
    Dim tmpButton As String = "Button" & buttonId
    strbild = New StringBuilder

    line = File.ReadAllLines(pathAndFile)
    Dim f As Integer = 0
    For Each lineToedit As String In line
        If InStr(1, lineToedit, tmpButton) > 0 Then
            Dim lineSplited = lineToedit.Split
            Dim cnt As Integer = lineSplited.Count
            Dim newVal = addCount(CInt(lineSplited.Last()))

            lineSplited(cnt - 1) = newVal
            lineToedit = String.Join(" ", lineSplited)
            line(f) = lineToedit
        End If
        f = f + 1
    Next

    strbild = New StringBuilder
    'putting together all the reversed word
    For j = 0 To line.GetUpperBound(0)
        strbild.Append(line(j))
        strbild.Append(vbNewLine)
    Next

    ' writing to original file
    File.WriteAllText(pathAndFile, strbild.ToString())

    Me.Refresh()

End Sub

' Reverse Function
Public Function ReverseString(ByRef strToReverse As String) As String
    Dim result As String = ""
    For i As Integer = 0 To strToReverse.Length - 1
        result += strToReverse(strToReverse.Length - 1 - i)
    Next
    Return result
End Function

Public Function addCount(ByVal arr As Integer) As Integer
    Return arr + 1
End Function

End Class

myfile.txt中的输出
Button1 = 9
Button2 = 2
Button3 = 4
Button4 = 0
Button5 = 20