Winforms:垂直スクロールバーがあるときにC#リストビューの最後の項目をプログラムで表示するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/616491

質問

垂直スクロールバーがあるときに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列のサイズを変更する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top