2011-01-30 16 views
-5

私は何をしようとしているのかは明らかですが、わからない場合は質問してください。ListBoxで複数の項目が選択されているかどうかを確認するには

if (listBox1.SelectedIndex == 1 && 2) 
{ 
    label1.Text = "Sometext"; 
} 
+4

ようこそ!作業を行い

機能残念ながら、ここで何をしようとしているのかは明らかではありません。選択したインデックスが1と2の両方であれば、ラベルを設定しますか?あなたはそれが達成しようとしていることをより精巧に説明できますか? – templatetypedef

+1

リストボックスで複数の項目を選択すると、リストボックスのプロパティを変更したいと思います。 – Liger86

答えて

6

SelectedIndicesは、複数選択を有効にした場合に必要なものです。 SelectedItemsプロパティのサイズを確認することもできます。

ListBox.SelectedIndexのドキュメントの状態:標準のリストボックスの場合

、あなたがリストボックスで選択されたアイテムのインデックスを決定するために、このプロパティを使用することができます。 ListBoxのSelectionModeプロパティがSelectionMode.MultiSimpleまたはSelectionMode.MultiExtended(複数選択ListBoxを示す)に設定され、複数の項目がリストで選択されている場合、このプロパティは選択した項目にインデックスを返します。

(あなたが最初の2つのオプションを選択しようとしているならば、あなたが0かどうかを確認したいと思うように制御が0基づいていることに注意してください。この

if(listBox1.SelectedItems.Count > 1) 
{ 
    // multiple items are selected 
} 
+1

もし私があなたが間違っているmsdnを読んでいないと思うなら、コピーアンドペーストの必要はありません。 – Liger86

+2

あなたの質問に情報の隣にあなたが与えたことを考えると、誰かが自分の自由時間であなたを助けようとすると、あまり苦いことはありません。 – Rob

+0

答えには正確に何をお探しですか?彼の応答は、1つ以上の項目が選択されているかどうかをチェックします。 – Rob

3
if (listBox1.SelectedIndices.Count > 1) // I'd use to group all of your multi-selection cases 
{ 
    if (listBox1.SelectedIndices.Contains(1) && listBox1.SelectedIndices.Contains(2)) 
    { 
    label1.Text = "Sometext"; 
    } 
} 

をお試しください項目1)および項目1(項目2)。

編集:コメントに記載された要件を処理するように修正されました。注目すべきは、おそらくより良い方法があり、この組み込みメソッド(複数選択リストボックスを使用したことはありません)があるかもしれません。しかし、処理する関数を作成したので、すべてのシナリオでそれを行う必要はありません。

private bool CasesFunction(ListBox lbItem, List<int> validIndices) 
{ 
    for (int index = 0; index < lbItem.Items.Count; index++) 
    { 
     if (lbItem.SelectedIndices.Contains(index) && !validIndices.Contains(index)) 
      return false; 
    } 
    return true; 
} 

そして、私はそれを使用する方法:スタックオーバーフローへ

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (listBox1.SelectedIndices.Count > 1) 
     { 
     List<int> MyCase = new List<int> { 0, 1 }; 

     if (CasesFunction(listBox1, MyCase)) 
     { 
      label1.Text = "Sometext"; 
      return; 
     } 
     else 
      label1.Text = ""; 

     MyCase = new List<int> { 1, 2 }; // can do other checks 

     if (CasesFunction(listBox1, MyCase)) 
     { 
      label1.Text = "Sometext 2"; 
      return; 
     } 
     else 
      label1.Text = ""; 
     } 
     else 
     label1.Text = listBox1.SelectedIndex.ToString(); 
} 
+0

あなたのコードを貼り付けただけで動作するようですが、リストボックス内のすべての項目を選択しても機能します。選択すべきではない項目が選択されているとき、どうやってそれが動作しないようにすることができますか? – Liger86

+0

@ Liger86 - 「作品」と「選択しない」を定義します。あなたは、あなたが達成しようとしていることを明らかにしていません。 –

+0

それは私を助けたコードの3行目でした。 – Liger86

関連する問題