检查列表框是不是包含文本框

Posted

技术标签:

【中文标题】检查列表框是不是包含文本框【英文标题】:Check if listbox contains textbox检查列表框是否包含文本框 【发布时间】: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 循环非常快,不应该影响性能。请记住,FindStringfindstringexact 正是这样做的(检查所有项目)。下一次,请描述您所追求的确切条件,我可以写下一个工作代码,提供您想要的确切结果(如果您愿意,现在可以这样做)。 @varocarbas 如果没问题。我正在尝试 .EndsWith (String list) 但没有运气。 【参考方案1】:

FindString 方法返回以搜索字符串 (MSDN) 开头的第一项。如果要匹配整个项目,则必须使用 FindStringExact (MSDN)。如果要执行更复杂的搜索,则必须遍历 ListBox 中的所有元素。

更新: 提供 OP 所期望的确切功能的代码。

For i As Integer = 0 To ListBox1.Items.Count - 1
    If (ListBox1.Items(i).ToString.Contains(TextBox1.Text)) Then
        ListBox2.Items.Add("String found at " & (i + 1).ToString) 'Indexing is zero-based
        Exit For
    End If
Next

【讨论】:

谢谢,马上去试试。编辑:像魅力一样工作,谢谢你的工作。 @Jedi 没问题。我猜你想从 1 开始输出结果(我的代码中的索引从零开始),这就是(i + 1).ToString 的原因。此外,您可能希望在比较 ListBox1.Items(i).ToString.ToLower.Contains(TextBox1.Text.ToLower) 中考虑 ToLower,以便忽略大写。 @Jedi 我很高兴读到。下次请尽可能描述性(在您的问题中,也可以通过询问、请求等)。我是来帮忙的;但如果我不知道您需要什么,我将无能为力。 哇,谢谢。我一直在寻找如何弄清楚如何获取列表框项目的文本值大约三天。给你点赞! @JTalati 谢谢。这里有一个小建议(如果我可以的话):.NET Framework 非常用户友好,免费提供的文档 (MSDN) 非常具有描述性并且有很多示例代码。使用内置功能(这里发生的事情)不应该成为问题,只需自己做一些测试/通过文档更好地理解您正在使用的控件。知道如何使用给定的编程语言不应该成为问题(更不用说对编程非常友好的 .NET Framework),困难在于正确地应用它来解决任何需要解决的问题。

以上是关于检查列表框是不是包含文本框的主要内容,如果未能解决你的问题,请参考以下文章

预输入数据列表文本框未重置

检查是不是有任何文本框为空 wpf

C#中如何检查文本框的输入信息是不是为数字?

Excel VBA检查各种组合框中是不是存在值,然后添加相应的文本框值

检查文本框输入是不是为数字

如何检查所有文本框是不是已填充? [复制]