Winforms:垂直スクロールバーがあるときにC#リストビューの最後の項目をプログラムで表示するにはどうすればよいですか?
質問
垂直スクロールバーがあるときにC#リストビューの最後のアイテムをプログラムで表示するにはどうすればよいですか?リストビューに関連するすべてのメソッドを調べましたが、何も見つかりません。
解決
実際には、リストビューをスクロールするのは簡単ではありません。アイテムを表示するように指示する必要があります。
var items = listView.Items;
var last = items[items.Count-1];
last.EnsureVisible();
他のヒント
this.listView1.Items[this.listView1.Items.Count - 1].EnsureVisible();
ListViewItem.EnsureVisible()
WINFORMS:
ListViewのItemsコレクションの最後の項目でSelected値をTRUEに設定しようとしましたか?
これを行うと、最後の項目に焦点が当てられると思います...必要に応じて下にスクロールします。 しかし、私は自分で試しませんでした。
編集: これでうまくいく:
Me.ListView1.Items(Me.ListView1.Items.Count - 1).EnsureVisible()
WPFまたはWinForms?
WPFでは、 ListViewItem
を取得して、 BringIntoView
を呼び出します。
これは、ウィンドウ関数を使用して水平を非表示にし、常に垂直を強制的に表示するリンクです:
http: //social.msdn.microsoft.com/Forums/en-US/winforms/thread/4aa4dade-53a2-4e2e-a8b4-b4980da1f39c/
次のハックは、最後のListViewアイテムを選択して表示します。
なぜこれが機能するのかはわかりませんが、機能します。
listview.SelectedIndices.Clear();
listview.FocusedItem = listview.Items[listview.Items.Count - 1];
listview.FocusedItem.Selected = true;
listview.BeginInvoke((MethodInvoker)delegate {
listview.FocusedItem.EnsureVisible();
});
また、水平スクロールバーを表示したくない場合は、 BeginInvoke
を呼び出す前に、ListViewの ClientArea
の幅に合わせてListView列のサイズを変更する必要があります。
所属していません StackOverflow