1

List<>ユーザーが指定した文字列に一致する文字列を検索するための適切な方法を見つけるのに苦労しています。最善の方法でそれを実行しているかどうかさえわかりませんが、これまでに得たものは次のとおりです。

   // This is the input string.
        string input = userDefinedStr.ToLower(); //New variable and made into lower cases.           

        for (int i = 0; i < listBox1.Items.Count; i++)
        {
            if (listBox1.Items[i].ToString().IndexOf(input, stringComparison.OrdinalIgnoreCase) >= 0)
            {
                listBox1.SetSelected(i, true);
            }
            else
            {
                MessageBox.Show("Sorry, There was no matches found.", "An oupps happend!");                    
            }

        }

問題は、ユーザー定義の文字列を含む文字列が1つ以上存在する可能性があることです。最初に見つかった文字列をマークするのではなく、実際にすべての一致Listを表示するのが最善の方法だと思います。List<string>listBox1

それとも、別のより効果的な方法で行うことができますか?!?

私はC#とコーディング全般に慣れていないので、最善の方法を知っているとは思えません。たくさんの記事や投稿を読んだことがありますが、これについて正しい方向を示しているものを見つけることができません。

4

2 に答える 2

1

リストボックスの内容をフィルタリングして、検索条件に一致するアイテムのみを表示することができます。他のすべてのアイテムは削除されます。これはlistBox1、実際のデータは含まれず、データのビューのみが含まれ、完全なデータが別の場所に保存されることを意味します。データの完全なセットが再び利用できるように、ユーザーがフィルターをリセットする方法も必要です。

于 2012-08-16T14:45:26.010 に答える
1

あなたは良いスタートを示していますが、そのifステートメントを 内にfor置くと、一致しないすべてのアイテムに対してポップアップするメッセージボックスが表示されます.

これまでのコードを使用する場合はbool、(false に初期化された) の前にa を追加しfor、一致するものが見つかったら true に設定します。が完了したら、forをテストし、boolそれでも false の場合は一致が見つからないため、メッセージ ボックスを表示する必要があります。

Linq ではより少ないキーストロークで実行できるのではないかと疑っていますが、読みやすく、理解しやすく、依存性があり、保守可能な (/読みやすく/理解しやすい) コードは、巧妙なものよりも優先される可能性があります。後で修正します。

于 2012-08-16T14:52:41.233 に答える