リストボックスで項目が選択されているかどうかを確認するにはどうすればよいですか? だから私はボタンを削除していますが、リストボックスで項目が選択されている場合にのみそのボタンを実行したいです。C#の背後にあるasp.netコードを使用しています。この検証がサーバー側で行われることをお勧めします。
乾杯..
リストボックスで項目が選択されているかどうかを確認するにはどうすればよいですか? だから私はボタンを削除していますが、リストボックスで項目が選択されている場合にのみそのボタンを実行したいです。C#の背後にあるasp.netコードを使用しています。この検証がサーバー側で行われることをお勧めします。
乾杯..
実際、SelectedIndexはゼロベースであるため、チェックは次のようにする必要があります。
if(listBox.SelectedIndex> = 0)..。
ボタン クリックのコールバックで、リスト ボックスの選択されたインデックスが 0 以上かどうかを確認します。
protected void removeButton_Click( object sender, EventArgs e )
{
if (listBox.SelectedIndex >= 0)
{
listBox.Items.RemoveAt( listBox.SelectedIndex );
}
}
複数のアイテムを削除するには、アイテムを逆に解析する必要があります。
protected void removeButton_Click(object sender, EventArgs e)
{
for (int i = listBox.Items.Count - 1; i >= 0; i--)
listBox.Items.RemoveAt(i);
}
通常どおりに解析すると、結果はまったく予期しないものになります。例: アイテム 0 を削除すると、アイテム 1 が新しいアイテム 0 になります。アイテム 1 であると信じているものを削除しようとすると、実際にはアイテム 2 として表示されているものが削除されます。
問題の説明と、 ListBox.SelectedIndex が何も選択されていない場合に -1 を返すという事実に基づいて、早期に解決するアプローチを使用することをお勧めします。
tvanfosson のボタン イベント ハンドラ コードの一部を借りるためです。
protected void removeButton_Click( object sender, EventArgs e )
{
if (listBox.SelectedIndex < 0) { return; }
// do whatever you wish to here to remove the list item
}
コレクションからアイテムを削除するには、逆方向にループする必要があります。
for (int i=lbSrc.Items.Count - 1, i>=0, i--)
{
//code to check the selected state and remove the item
}
for (int i = 0; i < lbSrc.Items.Count; i++)
{
if (lbSrc.Items[i].Selected == true)
{
lbSrc.Items.RemoveAt(lbSrc.SelectedIndex);
}
}
これが私が思いついたものです。