0

COL_name から値のコレクションを取得し、各値をlstDisplayという名前のリストボックスに追加しています。同時に、COl_name の同じ値をlstAvailable ListBox から削除する必要がありますが、値は onli gettin です。lstDispalyに追加され、lstAvailable としてanotherListボックス namde から削除されません。

            foreach (string drr in COl_name)
            {
                lstDispaly.Items.Add(drr);
                lstAvailable.Items.Remove(drr);
            }

ありがとうございました..

4

2 に答える 2

0

これは、lstAvailable に drr オブジェクトがないことを意味します。このようにしてみてください:

foreach (string drr in COl_name)
            {
                lstDispaly.Items.Add(drr);
                lstAvailable.Items.RemoveAt(COL_name.IndexOf(drr));
            }

または、クラスで Equals() メソッドをオーバーライドすることもできます

于 2013-10-22T11:21:11.293 に答える
0

ListBox.ObjectCollection.RemoveEquals2 つのオブジェクトが等しいかどうかを判断するために使用します。したがって、オブジェクト (それはどのタイプですか?) が意味のあるオーバーライドをしないEquals場合は、参照を比較します。両方のオブジェクトが同じ参照でない場合、それらは等しいとは見なされません。

別の理由は、ListBox文字列ではないオブジェクトが含まれているが、文字列を「削除」している可能性があります。次に、次を使用できますRemoveAt

var obj = lstAvailable.Items.Cast<object>()
   .Select((obj, index) => new{ obj, index })
   .FirstOrDefault(x => (x.obj == null ? "" : x.obj.ToString()) == drr);
if(obj != null)
    lstAvailable.Items.RemoveAt(obj.index);
于 2013-10-22T11:24:35.623 に答える