Vb.net 当源更改时,Textbox使用以前的AutoCompleteCustomSource建议

Vb.net 当源更改时,Textbox使用以前的AutoCompleteCustomSource建议,vb.net,Vb.net,我一直在四处寻找解决这个问题的办法,但毫无结果。我有一个小的VB.net程序,允许用户更改表单上文本框的自动完成源文件。如果加载时没有选择自动完成文件,程序会让您选择一个 如果在已经有自动完成文件的情况下选择了一个新文件,那么文本框将使用这两个文件的建议,直到程序重新启动,程序将仅使用新选择的文件启动。有没有办法防止这种行为 以下是选择文件的代码: Dim fd As OpenFileDialog = New OpenFileDialog() fd.Title = "Selec

我一直在四处寻找解决这个问题的办法,但毫无结果。我有一个小的VB.net程序,允许用户更改表单上文本框的自动完成源文件。如果加载时没有选择自动完成文件,程序会让您选择一个

如果在已经有自动完成文件的情况下选择了一个新文件,那么文本框将使用这两个文件的建议,直到程序重新启动,程序将仅使用新选择的文件启动。有没有办法防止这种行为

以下是选择文件的代码:

Dim fd As OpenFileDialog = New OpenFileDialog()

        fd.Title = "Select a file..."
        fd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
        fd.Filter = "Text files (*.txt)|*.txt"
        fd.RestoreDirectory = True

        If fd.ShowDialog() = DialogResult.OK Then
            My.Settings.streamerFileLocation = fd.FileName

            Call Form1_Load(Me, e)

            stream1Textbox.Text = ""
            stream2Textbox.Text = ""
            stream3Textbox.Text = ""
            stream4Textbox.Text = ""
        End If
以及它调用的Form1_Load sub的相关部分:

Using reader As New System.IO.StreamReader(My.Settings.streamerFileLocation)
            While Not reader.EndOfStream
                autocompleteList.Add(reader.ReadLine())
            End While
        End Using

        stream1Textbox.AutoCompleteCustomSource = autocompleteList
        stream2Textbox.AutoCompleteCustomSource = autocompleteList
        stream3Textbox.AutoCompleteCustomSource = autocompleteList
        stream4Textbox.AutoCompleteCustomSource = autocompleteList

一位朋友帮我弄明白了这一点——无论出于什么原因,在文件更改之间,程序仍然保留着旧条目。在自动完成列表中添加。在While循环之前清除:

Using reader As New System.IO.StreamReader(My.Settings.streamerFileLocation)
            autocompleteList.Clear() // THIS LINE 
            While Not reader.EndOfStream
                autocompleteList.Add(reader.ReadLine())
            End While
        End Using

嘿,普雷斯托,再也没有旧的自动完成建议了。

是的。编写一些代码来实现这一点。您需要保存用户的选择,然后在加载时,使用该信息加载它,而不是询问或不加载或您现在做的任何事情。这就像让文本框保存用户在下次应用程序运行时键入的值一样。仅当您将其编码为执行此操作时,它才会执行此操作。但它确实执行此操作-My.Settings.streamerFileLocation具有永久性,并且是在您选择新文件时更新的变量。问题是,如果我启动连接到包含Cat的文件的程序,然后选择另一个包含Dog的文件,程序仍然会自动完成Cat这个词。仅从新文件获取自动完成结果的唯一方法是重新启动应用程序。