编辑列表框项目的行
Edit Lines of list box items
'我有一个列表框,我将文本文件的多行复制到其中。我想删除每个列表项的前 20 个字符。我还想在源文件更新为新行时更新列表框的内容。列表框可能会替换我的文本框。任何帮助将不胜感激。
Try
Dim StrmRdr As New StreamReader("C:\Users\e70605\Desktop\alarms.txt")
Dim word As String = ""
Dim words(9999) As String
Dim i As Integer = 0
'this Do Until Loop was for a Listbox I initially started with
Do Until StrmRdr.Peek = -1
'catch a word at a time file file
word = StrmRdr.ReadLine()
'send readline into words
words(i) = word
'tell where the word should go to
ListBox1.Items.Add(words(i))
'go to the next line. until lines are finished.
i = i + 1
Loop
在这一行之后 word = StrmRdr.ReadLine()
放上这一行 word = word.SubString(20, word.Length - 20)
这样你就可以读入该行的最后一部分。 Substring()
在处理字符串时需要知道. SubString MSDN
下一部分有点棘手。您将需要设置一个计时器来扫描文件以查看它是否已更改。我会检查文件信息以查看自读取新数据以来最后修改的 date/time 是否发生了变化。这意味着您将必须跟踪最后修改的 date/time。
旁注:
我不会使用数组来读取文件的行。我建议使用列表。定义列表的方式是这样的dim myList as new List (Of String)
然后将新元素添加到您刚刚使用的列表中 myList.Add("new String")
。有关详细信息,请参阅 List MSDN
你怎么知道文件何时更新?
如果您的程序控制更新,那么您可以在每次有更新时重建列表框。只需放置一个函数来重建列表框并作为更新的一部分调用。
如果文件可以由您无法控制的进程更新,无论是另一个程序还是用户使用记事本或其他方式编辑,那么正如 jagler 所说,您必须创建一个计时器并定期检查更新。将您读取文件的时间存储在某处。每次你的计时器触发时,调用 File.GetLastWriteTime 并将文件的最后写入时间与你最后读取的时间进行比较。如果较新,请重新阅读并更新上次阅读时间。
您真的需要在用户查看屏幕时动态更新列表框吗?我不知道你的申请。我几乎总是(如果不是总是)在绘制屏幕时获取最新数据。如果用户关闭 window 并重新打开,或者在网络应用程序的情况下刷新 window,那么我会重新阅读。有时我会为桌面应用程序创建一个 "refresh" 按钮。
'我有一个列表框,我将文本文件的多行复制到其中。我想删除每个列表项的前 20 个字符。我还想在源文件更新为新行时更新列表框的内容。列表框可能会替换我的文本框。任何帮助将不胜感激。
Try
Dim StrmRdr As New StreamReader("C:\Users\e70605\Desktop\alarms.txt")
Dim word As String = ""
Dim words(9999) As String
Dim i As Integer = 0
'this Do Until Loop was for a Listbox I initially started with
Do Until StrmRdr.Peek = -1
'catch a word at a time file file
word = StrmRdr.ReadLine()
'send readline into words
words(i) = word
'tell where the word should go to
ListBox1.Items.Add(words(i))
'go to the next line. until lines are finished.
i = i + 1
Loop
在这一行之后 word = StrmRdr.ReadLine()
放上这一行 word = word.SubString(20, word.Length - 20)
这样你就可以读入该行的最后一部分。 Substring()
在处理字符串时需要知道. SubString MSDN
下一部分有点棘手。您将需要设置一个计时器来扫描文件以查看它是否已更改。我会检查文件信息以查看自读取新数据以来最后修改的 date/time 是否发生了变化。这意味着您将必须跟踪最后修改的 date/time。
旁注:
我不会使用数组来读取文件的行。我建议使用列表。定义列表的方式是这样的dim myList as new List (Of String)
然后将新元素添加到您刚刚使用的列表中 myList.Add("new String")
。有关详细信息,请参阅 List MSDN
你怎么知道文件何时更新?
如果您的程序控制更新,那么您可以在每次有更新时重建列表框。只需放置一个函数来重建列表框并作为更新的一部分调用。
如果文件可以由您无法控制的进程更新,无论是另一个程序还是用户使用记事本或其他方式编辑,那么正如 jagler 所说,您必须创建一个计时器并定期检查更新。将您读取文件的时间存储在某处。每次你的计时器触发时,调用 File.GetLastWriteTime 并将文件的最后写入时间与你最后读取的时间进行比较。如果较新,请重新阅读并更新上次阅读时间。
您真的需要在用户查看屏幕时动态更新列表框吗?我不知道你的申请。我几乎总是(如果不是总是)在绘制屏幕时获取最新数据。如果用户关闭 window 并重新打开,或者在网络应用程序的情况下刷新 window,那么我会重新阅读。有时我会为桌面应用程序创建一个 "refresh" 按钮。