'我有一个列表框,我将文本文件的多行复制到。我想删除每个列表项的前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
答案 0 :(得分:0)
在此行private static List<Sale> sales;
static {
sales = new ArrayList<>();
}
之后放置此行word = StrmRdr.ReadLine()
这将使您只读到读入行的最后一部分。word = word.SubString(20, word.Length - 20)
在处理字符串时是一件好事。 SubString MSDN
下一部分有点棘手。您需要设置一个计时器来扫描文件以查看它是否已更改。我会检查文件信息,看看自从读入新数据以来上次修改日期/时间是否已更改。这意味着您必须跟踪上次修改的日期/时间。
旁注:
我不会使用数组来读取文件的行。我建议使用List。定义List的方式是这样Substring()
然后将新元素添加到刚刚使用的列表dim myList as new List (Of String)
。有关详细信息,请参阅List MSDN
答案 1 :(得分:0)
您如何知道文件何时更新?
如果您的程序控制更新,那么您可以在每次更新时重建列表框。只需添加一个函数来重建列表框并作为更新的一部分进行调用。
如果文件可以由您控制之外的进程更新,无论是其他程序还是使用记事本等编辑的用户,那么正如jagler所说,您必须创建计时器并定期检查更新。存储您在某处读取文件的时间。每次计时器触发时,调用File.GetLastWriteTime并将文件的最后写入时间与上次读取的时间进行比较。如果它更新,请重新读取并更新上次读取时间。
在用户查看屏幕时,您是否真的需要动态更新列表框?我不知道你的申请。我几乎总是如果不总是在绘制屏幕时获取最新数据。如果用户关闭窗口并重新打开,或者在Web应用程序刷新窗口的情况下,则重新阅读。偶尔使用桌面应用程序,我会创建一个“刷新”按钮。