Как добавить предыдущую и следующую кнопку в ListView - PullRequest
0 голосов
/ 25 августа 2018

Я использую Visual Studio 2010 и создал форму приложения Windows для одной формы. Я использую SQL-сервер, который показывает информацию о таблице из базы данных SQL.

Когда я нажимаю следующую кнопку, она будетперейти к следующему ряду, и если я нажму на предыдущий, он перейдет к предыдущим строкам?

А как мне получить данные первого столбца ListView и вставить их в Label1 при нажатии кнопки «Следующая» и «Предыдущая»?

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Установите для свойства MultiSelect в вашем списке просмотра значение false, вы сможете сделать это:

private void btnPrevious_Click(object sender, EventArgs e)
{
    int index = listView1.SelectedIndices[0] - 1;

    // In case we're in the first row
    if (index < 0)
        return;

    listView1.Items[index].Selected = true;
}

private void btnPrevious_Click(object sender, EventArgs e)
{
    int index = listView1.SelectedIndices[0] + 1;

    // In case we're in the last row
    if (index >= listView1.Items.Count)
        return;

    listView1.Items[index].Selected = true;
}

Установка свойства Selected элемента отменяет выбор других элементов (еслиMultiSelect имеет значение false).


Вы можете даже перейти от последней строки к первой строке, например, установив индекс на 0 или listView1.Items.Count - 1.

0 голосов
/ 25 августа 2018

Пока ваш вид списка настроен на выбор только 1 элемента MultiSelect = false, вы можете использовать:

int index = listView1.SelectedIndices[0] + 1;
listView1.SelectedIndices.Clear();
listView1.SelectedIndices.Add(index);

шаг вперед и

int index = listView1.SelectedIndices[0] - 1;
listView1.SelectedIndices.Clear();
listView1.SelectedIndices.Add(index);

чтобы сделать шаг назад.

NB. Вам необходимо будет выполнить некоторую проверку значений, чтобы убедиться, что при отступлении назад вы не опускаетесь ниже 0, а при переходе вперед не проходите мимо общего количества элементов в просмотре списка.

Чтобы получить содержимое текущего элемента, вам нужно событие, прикрепленное к вашему списку SelectedIndexChanged:

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (listView1.SelectedItems.Count > 0)
    {
        ListViewItem currentitem = listView1.SelectedItems[0];
        label1.Text = currentitem.Text;
    }
    else
        label1.Text = string.Empty;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...