5

こんにちは、しばらく検索しましたが、問題の解決策が見つからないようです。コードを使用してリストボックス内の複数のアイテムを選択する複数の方法を試しましたが、どれも機能しませんでした。得られた最良の結果は、1 つの選択されたアイテムでした。私のリストボックスに。

基本的には、同じ値の複数のアイテムを選択したいです。

以下は私のコードです。初心者のようで申し訳ありませんが、プログラミングは初めてで、まだ基本的なことを学んでいます。

 foreach (string p in listBox1.Items)
 {
           if (p == searchstring) 
           {
                 index = listBox1.Items.IndexOf(p);
                 listBox1.SetSelected(index,true);

           }
 }

ご覧のとおり、リストボックス内のすべてのアイテムをループして、「検索文字列」に等しいすべてのアイテムに対してインデックスを取得し、選択済みとして設定するようにプログラムに指示しようとしています。

ただし、このコードは、「searchstring」に等しいリスト内の最初の項目を選択するだけで、選択して停止します。すべての「searchstring」項目を反復処理するわけではありません。

4

1 に答える 1

12

コメントで示唆されているように、必要に応じてorのSelectionModeいずれかに設定する必要がありますが、 loop では反復中にコレクションを変更できないため、orの代わりに loopを使用する必要があります。したがって、このプロパティを設定してもコードは実行されず、例外が発生します。これを試して:MulitSimpleMultiExpandedforwhileforeachforeach

for(int i = 0; i<listBox1.Items.Count;i++)
{
     string p = listBox1.Items[i].ToString();
     if (p == searchstring)
     {
          listBox1.SetSelected(i, true);

     }
}

デザイナーを使用する場合は [プロパティ] ウィンドウで、または次のFormコードを使用するコンストラクターなどで、SelectionMode を設定できます。

listBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple;
于 2012-10-29T23:05:04.690 に答える