반응형
ListBox의 맨 아래로 스크롤하는 방법은 무엇입니까?
Winforms ListBox를 작은 이벤트 목록으로 사용하고 있으며 마지막 이벤트 (하단)가 표시되도록 채우려 고합니다. 이 SelectionMode
없음으로 설정됩니다. 사용자는 목록을 스크롤 할 수 있지만 처음부터 끝까지 스크롤하는 것을 선호합니다.
같은 것들에 대한 지원의 부족에서 찾고 ScrollIntoView
, EnsureVisible
, 나는 사용자 지정 컨트롤을 만들어야합니다 가정하고 그 목록 상자에서 상속; 그러나 나는 거기에서 무엇을 해야할지 모르겠습니다.
몇 가지 조언?
TopIndex
속성을 적절하게 설정하면 쉽게 할 수 있다고 생각합니다 .
예를 들면 :
int visibleItems = listBox.ClientSize.Height / listBox.ItemHeight;
listBox.TopIndex = Math.Max(listBox.Items.Count - visibleItems + 1, 0);
아래로 스크롤 :
listbox.TopIndex = listbox.Items.Count - 1;
맨 아래로 스크롤하여 마지막 항목을 선택하십시오.
listbox.SelectedIndex = listbox.Items.Count - 1;
이것은 내가 WPF (.Net Framework 4.6.1)에 대해 끝낸 것입니다.
Scroll.ToBottom(listBox);
다음 유틸리티 클래스 사용 :
public partial class Scroll
{
private static ScrollViewer FindViewer(DependencyObject root)
{
var queue = new Queue<DependencyObject>(new[] { root });
do
{
var item = queue.Dequeue();
if (item is ScrollViewer) { return (ScrollViewer)item; }
var count = VisualTreeHelper.GetChildrenCount(item);
for (var i = 0; i < count; i++) { queue.Enqueue(VisualTreeHelper.GetChild(item, i)); }
} while (queue.Count > 0);
return null;
}
public static void ToBottom(ListBox listBox)
{
var scrollViewer = FindViewer(listBox);
if (scrollViewer != null)
{
scrollViewer.ScrollChanged += (o, args) =>
{
if (args.ExtentHeightChange > 0) { scrollViewer.ScrollToBottom(); }
};
}
}
}
참고URL : https://stackoverflow.com/questions/8796747/how-to-scroll-to-bottom-of-listbox
반응형
'IT Share you' 카테고리의 다른 글
jQuery를 설치 하시겠습니까? (0) | 2020.12.14 |
---|---|
메인 문서의 JavaScript에서 IFrame의 문서 가져 오기 (0) | 2020.12.14 |
XSLT 1.0을 XSLT 2.0으로 업그레이드 (0) | 2020.12.14 |
내 앱이 언제 종료되었는지 어떻게 알 수 있습니까? (0) | 2020.12.14 |
axios로 Bearer 토큰 보내기 (0) | 2020.12.14 |