2011-12-06 2 views
0

멀티 스레딩을 지원하는 앱을 만들려고합니다. 그것은 여러 개의 다른 탭이 있고 나는 모든 초기화 작업의 로그가있는 탭이 있습니다. 내 로그를 업데이트 할 때 맨 아래로 스크롤하려고합니다. 나는 ListView 컨트롤을 사용하고 있습니다. ListView.EnsureVisible()이 작동하지 않는 이유는 무엇입니까?

Public Sub SubmitLog(ByVal Data As String) 

    If Data <> "" Then 
    With lstLogs 
     .Items.Add(New ListViewItem(New String(1) {Date.Now.ToString(), Data})) 
     .Items.Item(.Items.Count - 1).EnsureVisible() 
    End With 
    End If 

End Sub 

내가 전화 간단한 루프를 테스트하려면 :

For I As Integer = 0 To 50 
    SubmitLog(Path.GetRandomFileName()) 
Next 

을하지만 마지막 항목으로 스크롤되지 않습니다. 왜 맨 아래로 스크롤하지 않고 어떻게 만들 수 있습니까? true로 Selected 속성을 설정

답변

1

시도 :

If Data <> "" Then 
    With lstLogs 
    .Items.Add(New ListViewItem(New String(1) {Date.Now.ToString(), Data})) 
    .Items.Item(.Items.Count - 1).Selected = True 
    .Items.Item(.Items.Count - 1).EnsureVisible() 
    End With 
End If 

아니면 그냥 lstLogs 컨트롤이 포커스를 가지고 있는지 확인하십시오.

여기서 설명 : Problem with Listview EnsureVisible

관련 문제