1

ObjectListViewは本質的に標準の.NETのラッパーであるを持っていますListView。私の問題は、新しいオブジェクトをコントロールに追加し、コントロールをスクロールしてオブジェクトが表示されていることを確認し、オブジェクトを選択するためのメソッド呼び出しの正しいシーケンスを理解できないことです。以下は、これを実現するための私のコードです。すべてが機能しますが、何らかの理由で、列の1つをクリックするか、サイズを変更するまで、選択したアイテム/オブジェクトの背景色が表示されません。コントロールがフォーカスされていないのか、それとも何なのかわかりません。

// objectListViewItems is of type BrightIdeasSoftware.ObjectListViewItems
objectListViewItems.AddObject(e.InsertedItem);
objectListViewItems.Refresh();
objectListViewItems.Focus();
objectListViewItems.EnsureModelVisible(e.InsertedItem);
objectListViewItems.SelectedObject = e.InsertedItem;
objectListViewItems.Focus();

以下のコードは、ObjectListViewのアイテムを更新し、正常に機能します。上記で何が間違っているのかわからない...

objectListViewItems.RefreshObject(itemToEdit);
objectListViewItems.Focus();
objectListViewItems.SelectObject(itemToEdit);
4

1 に答える 1

5

これはあなたが提案したように機能するはずです(私はこれを何度か行いました)。ただし、呼び出しRefresh()と2番目Focus()は不要です。また、私はプロパティSelectObject()よりもむしろ使用したいと思いSelectedObjectます。

このような:

objectListView.AddObject(newItem);
objectListView.Focus();
objectListView.EnsureModelVisible(newItem);
objectListView.SelectObject(newItem);

また、後で実行されるコードがないことを確認してください。これにより、別のコントロールがフォーカスを取得する可能性があります。

何が起こっているかを絞り込むために、設定してみることができます

objectListView.HideSelection = false;

通常の場合ListView、これにより、コントロールがフォーカスを失った場合でも、現在の選択が表示されたままになります(ただし「グレー表示」されます)。

InitializeComponent()デザイナを使用した場合は、完全なOLV構成(から)を投稿してください。たぶん、これを引き起こしているいくつかの奇妙な星座があります。

于 2013-01-24T08:33:11.897 に答える