を使用した場合の位置を設定していない:のBindingSourceが、私はカスタムオブジェクトのリストにバインドされたのBindingSourceを持っている、と私は次のメソッドを持っているIndexOfメソッド
private void SetMyItem(MyItem item)
{
//Test 1
if (item != null)
{
bsItems.Position = bsItems.List.IndexOf(item);
}
//Test 2
foreach (var itm in bsItems)
{
if (itm.IsEqual(item))
{
bsItems.Position = bsItems.List.IndexOf(itm);
break;
}
}
}
リストは、いくつかの項目が含まれており、これらの一つでもありますメソッドに渡されるパラメータ
上記の最初のテストでは、渡されたパラメータのインデックスを取得することで、直ちに位置を設定します。位置は-1です。
渡されたパラメータがリスト内の項目と同じであることを確認するために、2番目のテストを追加しました。一致するアイテムが見つかりましたが、位置は-1です。
バインド元が正しい位置に設定されていないのはなぜですか?
EDIT
IsEqual
バイナリストリームに両方のオブジェクトをシリアル化し、それらを比較する拡張メソッドです。予想通り2
IndexOf
EDITが働いています。正しいインデックスを返しています。ただし、Position
をこのインデックスに設定しても機能しません。
'IsEqual'は何ですか? – Crowcoder
['IndexOf'](https://msdn.microsoft.com/en-us/library/system.collections.ilist.indexof(v = vs.110).aspx#Anchor_1)メソッドは、コレクションのオブジェクト ' ['Equals'](https://msdn.microsoft.com/en-us/library/bsc2ak47(v=vs.110).aspx)と[' CompareTo'](https://msdn.microsoft.com/ en-us/library/system.icomparable.compareto(v = vs.110).aspx)アイテムが存在するかどうかを判断するメソッド。等しい値のプロパティを持つ2つのオブジェクトを持つことは、それらのオブジェクトが等しいことを意味しません。 –
@RezaAghaeiそのことを私が推測していた。 –