2011-11-10 13 views
8

Mam listę widoków WinForm z 200 elementami wyświetlanymi w widoku listview szczegółów.
50 produktów wyświetla się po chwili na ekranie. Chciałbym nacisnąć przycisk i wyświetlić w widoku listy wybrany indeks # - na przykład # 113.Odśwież listview, aby wyświetlał wybrany index?

Problem polega na tym, że mogę wybrać indeks 113, ale widok listy nie pokaże 113 w górnej części zakresu przewijania.

Co muszę zrobić, aby uzyskać dostęp do listy, aby przejść do selektora?

UPDATE1:

Odpowiedź jest użycie EnsureVisible:

populateListView(); 
this.listView1.Items[113].Selected = true; 
this.listView1.Items[113].EnsureVisible(); 

Odpowiedz

15

Próbowałaś użyciu yourList.SelectedItem.EnsureVisible

Korzystając list.TopItem = list.Item[x] aby go przewinąć tę pozycję do góry (lub próby)

http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.ensurevisible%28VS.90%29.aspx

+1

EnsureVisible gwarancji, że wybrana pozycja jest widoczna w widoku listy, ale nie zapewnia, że ​​pozycja jest najwyższym elementem. Wydaje się, że pytanie brzmi, jak nie tylko upewnić się, że przedmiot jest widoczny, ale jak mikrofon pojawia się "w górnej części zakresu przewijania". Aby to osiągnąć, użyj właściwości listView1.TopItem. – RobotMike

4

Upewnij się, że widoczny będzie upewnić się, że element, który zdefiniujesz, będzie widoczny w oknie, ale niekoniecznie będzie najwyższym elementem ListView.

Aby upewnić się, że wybrana pozycja jest górna pozycja użyć właściwości listView1.TopItem

listView1.Items[113].Selected = true; 
listView1.TopItem = listView1.SelectedItems[0]; 
1

Dodaj następujący kod dla wyniku:

list.SelectedIndex = i; 
list.ScrollIntoView(list.Items[i]); 
Powiązane problemy