专注于列表框中的最后一个条目

时间:2011-12-08 14:37:02

标签: c# asp.net listbox chat

我正在我的网站上进行聊天功能。 当有人输入任何文本时,我希望它能够显示从进入聊天到现在的所有信息。它工作正常,所有......

var query = from es in gr.chats
                            where es.timestamps > date
                            orderby es.timestamps ascending
                            select es;

                List<chat> list = new List<chat>();
                foreach (chat chat1 in query)
                {
                    list.Add(chat1);
                }

                for (int i = 0; i < list.Count; i++)
                {
                    lbChat.Items.Add("[" + list[i].timestamps + "] " + list[i].personID.ToString() + ": " + list[i].besked);
                }

BUT

我希望我的列表框中的焦点位于我的最新条目...我想将列表框焦点一直移动到列表框的底部。

有人对如何关注列表框中的最后一个条目有任何想法吗?

3 个答案:

答案 0 :(得分:10)

this.ListBox1.Items.Add(new ListItem("Hello", "1"));
this.ListBox1.SelectedIndex = this.ListBox1.Items.Count - 1;

第一行只是添加一个项目。第二个设置其SelectedIndex,它确定应该选择ListBox项目列表中的哪个项目。

答案 1 :(得分:8)

使用SetSelected()

//This selects and highlights the last line
[YourListBox].SetSelected([YourListBox].Items.Count - 1, true);

//This deselects the last line
[YourListBox].SetSelected([YourListBox].Items.Count - 1, false);

其他信息(MSDN):

  

您可以使用此属性设置a中项目的选择   多选ListBox。选择单选中的项目   ListBox,请使用SelectedIndex属性。

答案 2 :(得分:1)

当ListBox的SelectionMode设置为MultiSimple或MultiExtended时,您需要做一些额外的工作:

listbox.Items.Add( message );

// this won't work as it will select all the items in your listbox as you add them
//listbox.SelectedIndex = listbox.Items.Count - 1;

// Deselect the previous "last" line    
if ( listbox.Items.Count > 1 )
    listbox.SetSelected( listbox.Items.Count - 2, false );
// Select the current last line
listbox.SetSelected( listbox.Items.Count - 1, true );
// Make sure the last line is visible on the screen, this will scroll
// the window as you add items to it
listbox.TopIndex = listbox.Items.Count - 1;