リストボックスで項目を追加する度に常に一番下までスクロールするようにしたい

タグの編集
投稿者 扇風機をつけたままで寝ると凍死する  (社会人) 投稿日時 2011/3/7 21:37:52
分かりにくい題名ですみません。

リストボックスを使っていて、表示領域いっぱいまで項目を詰めるとスクロールバーがでてきて下にスクロールできるようになりますよね。
通常はいっぱいまで詰めるとそのままでスクロールバーが伸びてくだけです。
しかし、これでは最新の項目に何を追加したかわかりにくいです。

項目を追加する度に一番下までスクロールするようにしたいのですがやり方を教えて下さい。
投稿者 るきお  (社会人) 投稿日時 2011/3/7 21:52:08
こんにちは。

追加した項目を選択してよいのであれば簡単にできます。
ListBox1.SelectedIndex = ListBox1.Items.Add("あいうえお")


選択してはいけないのであればWindows APIを呼び出すことになります。
その場合難易度は急上昇します。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2011/3/7 23:41:10
Private Sub Timer1_Tick(ByVal sender As ObjectByVal e As EventArgs) Handles Timer1.Tick
    ListBox1.TopIndex = ListBox1.Items.Add(Now.ToString("HH:mm:ss.ffff"))
End Sub
投稿者 るきお  (社会人) 投稿日時 2011/3/8 13:12:35
おぉ。TopIndexがありましたか。
フォローしてもらってよかったです。ありがとうございます。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2011/3/8 15:10:24
蛇足ですが、ついでにの場合も。

Private Sub Timer1_Timer()
    Dim current As String
    current = Format(Now, "HH\:mm\:ss") & Format(Timer - Fix(Timer), ".0000")
    List1.AddItem current
    List1.TopIndex = List1.NewIndex
End Sub


こちらも TopIndex プロパティですが、最新項目のインデックスの取得方法が異なります。