Сосредоточиться на последней записи в списке - PullRequest
4 голосов
/ 08 декабря 2011

Я делаю функцию чата на моем сайте.Когда кто-нибудь вводит в него какой-либо текст, я хочу, чтобы он отображал все сообщения от того времени, когда он входил в чат, до настоящего момента.Это работает нормально, и все ...

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);
                }

НО

Я хочу, чтобы фокус в моем списке был на моей новой записи ... Я хочу переместить фокус моего списка внизсписка все время.

Кто-нибудь получил какие-либо идеи о том, как сосредоточиться на последней записи в списке ??

Ответы [ 3 ]

10 голосов
/ 08 декабря 2011
this.ListBox1.Items.Add(new ListItem("Hello", "1"));
this.ListBox1.SelectedIndex = this.ListBox1.Items.Count - 1;

Первая строка просто добавляет элемент.Второй устанавливает его SelectedIndex , который определяет, какой элемент в списке элемента ListBox должен быть выбран.

8 голосов
/ 08 декабря 2011

Использование 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):

Вы можете использовать это свойство, чтобы установить выбор элементов в множественный выбор ListBox . Чтобы выбрать элемент в одиночном выборе ListBox , используйте свойство SelectedIndex .

1 голос
/ 25 августа 2016

Когда для SelectionBode вашего ListBox установлено значение 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...