私は3つのリストボックスを使用しています。反転ボタンを使用して、すべてのリストボックスで選択した項目を反転する必要があります。forループを1つだけ使用して、複数のリストボックスで選択した項目を反転させる方法はありますか?
どのように1つのループだけを使用してコード化できますか? 3つ以上のリストボックスもあります。
私は3つのリストボックスを使用しています。反転ボタンを使用して、すべてのリストボックスで選択した項目を反転する必要があります。forループを1つだけ使用して、複数のリストボックスで選択した項目を反転させる方法はありますか?
どのように1つのループだけを使用してコード化できますか? 3つ以上のリストボックスもあります。
この関数を使用して、指定したリストボックスの選択を反転することができます。
/* Windows ListBox
public void InvertSelection(ListBox objLstbox)
{
if(objLstbox == null) return;
for (int i = 0; i < objLstbox.Items.Count; i++)
objLstbox.SetSelected(i, !objLstbox.GetSelected(i));
}
*/
//WebApp listbox
public void InvertSelection(ListBox objLstbox)
{
if (objLstbox == null) return;
for (int i = 0; i < objLstbox.Items.Count; i++)
objLstbox.Items[i].Selected = !objLstbox.Items[i].Selected;
}
private void btnInvert_Click(object sender, EventArgs e)
{
InvertSelection(listBox1);
InvertSelection(listBox2);
InvertSelection(listBox3);
}
それだけであれば簡単です... 'ListBox'コントロールには単純に逆転できる' Boolean'型の 'Selected'プロパティがありません。つまり、あるべきことよりもはるかに多くのモンキーがあります。詳細は私の答えを見てください。 –
擬似コードをC#コードの作業に更新しました。指摘してくれてありがとう。 – AbrahamJP
ああ、あなたは私の間違いを明らかにする!私は 'SetSelected'プロパティについてすべてを忘れていました! +1、より洗練されたソリューションです。 –
public void InvertSelection(ListBox objLstbox)
{
if (objLstbox == null) return;
for (int i = 0; i < objLstbox.Items.Count; i++)
objLstbox.Items[i].Selected = !objLstbox.Items[i].Selected;
}
protected void Button1_Click(object sender, EventArgs e)
{
InvertSelection(ListBox1);
}
あなたはWebアプリケーションのリストボックスコントロールをしているようです。私はWebとWindowsの両方を含むようにコードスニペットを更新しました。 "// WebApp listbox"とコメントされた "InvertSelection"メソッドを使用できます。これはうまくいくはずです。 – AbrahamJP
私はここでVB.Netの回答だあなたの残りの部分と、この上で私の頭を打ち、最後に を反転させるための私自身の機能を開発しました:
Private Function InvertListBoxSelections(ByRef tempListBox As ListBox) As Integer
Dim selectedind(tempListBox.SelectedItems.Count) As Integer
Try
For selind = 0 To tempListBox.SelectedItems.Count - 1
selectedind.SetValue(tempListBox.Items.IndexOf(tempListBox.SelectedItems(selind)), selind)
Next
tempListBox.ClearSelected()
For listitemIndex = 0 To tempListBox.Items.Count
If Array.IndexOf(selectedind, listitemIndex) < 0 Then
tempListBox.SetSelected(listitemIndex, True)
End If
Next
Return 1
Catch ex As Exception
Return 0
End Try
End Function
for (int i = 0; i < listbox.Items.Count; i++)
{
if (listbox.SelectedItems.Contains(listbox.Items[i]))
listbox.SetSelected(i, false);
else
listbox.SetSelected(i, true);
}
それが役立つだろうこれをもう少し動機づけることができれば。現在のところ、宿題の問題のように読んでいて、なぜ単一のループでタスクを達成する必要があるのかわかりません。 – warrenm