在c#中自动从上到下滚动列表视图

时间:2013-11-26 06:06:07

标签: c# winforms visual-studio-2010 listview

美好的一天。

我目前正在创建某种广告应用。它是从上到下滚动的简单文本,并将再次重复。我目前正在使用listview在c#中执行此操作。列表视图中显示的文本将来自数据库。我正在使用计时器自动刷新表单。问题是如何在每次表单加载时自动移动或自动从顶部滚动到底部,并且每次完成时都会重复。

谢谢。

这是King King先生要求的代码。

 private void timer1_Tick(object sender, EventArgs e)
    {
        this.Refresh();
        listView1.TopItem = listView1.Items.Cast<ListViewItem>().LastOrDefault();
    }

2 个答案:

答案 0 :(得分:3)

您可以将ListView.TopItem设置为最后一项,并确保滚动条位于底部:

listView1.TopItem = listView1.Items[listView1.Items.Count-1];

你应该确定你的listView1至少有一个项目,这是一个更安全的LINQ版本:

listView1.TopItem = listView1.Items.Cast<ListViewItem>().LastOrDefault();

更新

如果您想要按照每个项目从上到下滚动,请尝试以下操作:

int lastIndex;
private void timer1_Tick(object sender, EventArgs e)
{
    this.Refresh();
    int i = listView1.TopItem == null ? -1 : listView1.TopItem.Index;        
    if(i>-1) {
      if(i == lastIndex || i == listView1.Items.Count - 2) i = 0;
      lastIndex = i;
      listView1.TopItem = listView1.Items[++i];
    }
}

答案 1 :(得分:2)

添加项目后:

listView.EnsureVisible(listView.Items.Count - 1);