2016-03-15 52 views
1

我點擊一個按鈕(使用此代碼)將文件「testexam」中的行加載到列表框「lstHere」中。 Testexam將被另一個程序更新,我想要一個代碼將「testexam」的新行復制到「lstHere」的底部。其次,選定的索引應該列入新列表的第一項。任何幫助將不勝感激。VB.net從文件中更新列表項

Private Sub 
    Dim MReader As New StreamReader("C:\Users\Sparrow\testexam.txt") 
    Dim this1 As String = "" 
    Dim thisline(6000) As String 


    Dim i As Integer = 0 

    Do Until MReader.Peek = -1 
     this1= MReader.ReadLine 

     thisline(i)= this1 

     lstHere.Items.Add(thisline(i)) 

     'go to the next line. 
     i = i + 1 

    Loop 
End Sub 
+0

你爲什麼不使用'File.ReadAllLines( 「C:\用戶\麻雀\ testexam.txt」)'得到完整的數組只有一行? –

回答

1

我不知道你是如何試圖實現這一點,但它適用於不同的按鈕。

Button1的:

'Add the selected item to the top 
ListBox1.Items.Insert(0, ListBox1.SelectedIndex) 

將Button2:

'Delete duplicates 
Dim items(ListBox1.Items.Count - 1) As Object 
ListBox1.Items.CopyTo(items, 0) 
ListBox1.Items.Clear() 
ListBox1.Items.AddRange(items.AsEnumerable().Distinct().ToArray()) 
+0

謝謝你,noidea和@Tim Schmelter。我試過但lstHere.items.Addrange(行),但它增加了更新文件中的所有行。所以列表框會有重複的行(來自舊文件和來自更新的重複項)。我希望它能夠在上次讀取文件時不存在在此點擊處複製的新行。其次,選定的索引應該是這些新行的第一項。謝謝。 – MordC

+0

新編輯!它工作正常,但你需要防止未選定的項目和東西。順便說一句,如果它適合,標記爲已回答。祝你好運 – noidea

+0

在我點擊這個新按鈕來插入新的(更新)行之前,列表框已經有許多列表項(從「testexam」文件中讀取)。我想將這些新行添加到列表的按鈕中,因此文件的每個更新行都應該是添加到列表框的行的一部分。應該排除的是已經被複制的行。例如,如果在更新文件之前,我複製了AB,CD,EF和GH行,並且在60秒後新的行(IJ,AB,EF,DG)被添加到文件中,我需要的新代碼或按鈕應該被複制行IJ,AB,EF和DG並追加到列表中。謝謝。 – MordC