【发布时间】:2013-10-04 14:51:35
【问题描述】:
我知道我可以为此使用.FindString,但由于某种原因它不起作用。
基本上,如果列表框项目只包含文本框文本的一部分,它会执行操作。
这是无效代码的示例:
Dim x As Integer = -1
x = ListBox1.FindString(TextBox1.Text)
If x > -1 Then
'dont add
ListBox2.Items.Add("String found at " & x.ToString)
Else
End If
【问题讨论】:
-
我希望我的回答足够清楚:你必须使用
FindStringExact而不是FindString来匹配整个项目。例如:如果ListBox包含“test1”,“test”;如果您将FindString与“test”(或“tes”或“te”等)一起使用,它将返回第一项。另一方面,如果您将FindStringExact也与“test”一起使用,它将返回第二项(并且不会找到任何与“tes”、“te”等相关的内容)。 -
@varocarbas 如果文本框包含 'foo.txt' 并且列表框包含 'C:\Users\foo.txt' 将不起作用。(我的意思是 .findstring 和 .findstringexact)
-
这就是我在回答中所说的:如果您想要更复杂的功能,则必须通过每个元素进行交互。在这种情况下,您必须对所有项目进行 foreach 循环,并为每个项目使用
.Contains(找到时使用Exit For)。 foreach 循环非常快,不应该影响性能。请记住,FindString或findstringexact正是这样做的(检查所有项目)。下一次,请描述您所追求的确切条件,我可以写下一个工作代码,提供您想要的确切结果(如果您愿意,现在可以这样做)。 -
@varocarbas 如果没问题。我正在尝试 .EndsWith (String list) 但没有运气。
标签: vb.net string textbox listbox contains