【问题标题】:How do I add a previous and next button to ListView如何将上一个和下一个按钮添加到 ListView
【发布时间】:2018-08-25 09:39:04
【问题描述】:

我正在使用 Visual Studio 2010 并为我正在使用 SQL Server 的一个表单制作了 Windows 应用程序表单,该表单显示了来自 sql 数据库的表的信息。

当我单击下一个按钮时,它将转到下一行,如果我单击上一个按钮,它将转到上一行?

以及如何在单击下一个和上一个按钮时获取ListView 的第一列的数据并将其插入到Label1

【问题讨论】:

  • 请在每篇文章中提出一个问题。

标签: c# winforms listview


【解决方案1】:

将列表视图中的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

【讨论】:

  • listView1.Items.Count - 1,如果我转到最后一行并单击该按钮,我将转到第一行如何设置??
  • if (index &gt;= listView1.Items.Count) 之后而不是返回,你会做index = 0。这样你会回到第一行。
【解决方案2】:

只要您的列表视图设置为仅选择一项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);

后退一步。

注意:您需要进行一些值检查,以确保当您后退时不会低于 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;
}

【讨论】:

    猜你喜欢
    • 2021-01-24
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多