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