【问题标题】:Select Item in ListView Programmatically以编程方式在 ListView 中选择项目
【发布时间】:2013-09-08 16:28:43
【问题描述】:

我有这个显示所有记录从数据库到列表视图

   private void populatelistview()
    {
        listView1.Items.Clear();
        using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString))
        {
            myDatabaseConnection.Open();
            using (SqlCommand SqlCommand = new SqlCommand("Select * from Employee", myDatabaseConnection))
            {
                SqlCommand.CommandType = CommandType.Text;
                SqlDataReader dr = SqlCommand.ExecuteReader();
                while (dr.Read())
                {
                    listView1.Items.Add(new ListViewItem(new string[] { dr["EmpID"].ToString(), dr["Lname"].ToString(), dr["Fname"].ToString() }));
                }
            }
        }
    }

例如我有这个结果:

EmpID  |  Lname  |  Fname
40001  |  Smith  |  John
40002  |  Jones  |  David
40003  |  Bryan  |  Kobe

如何以编程方式从上面的列表中选择一个项目?例如我在 textBox 中输入 40002 那么这将被选中 40002 | Jones | David

【问题讨论】:

    标签: c# winforms listview


    【解决方案1】:

    您必须处理您的TextBoxTextChanged 事件:

    //TextChanged event handler for your textBox1
    private void textBox1_TextChanged(object sender, EventArgs e) {
            ListViewItem item = listView1.Items.OfType<ListViewItem>()
                                         .FirstOrDefault(x => x.Text.Equals(textBox1.Text, StringComparison.CurrentCultureIgnoreCase));
            if (item != null){
                listView1.SelectedItems.Clear();
                item.Selected = item.Focused = true;
                listView1.Focus();//Focus to see it in action because SelectedItem won't look like selected if the listView is not focused.
            }
    }
    

    您也可以使用ListView.FindItemWithText 方法,但请注意它与开始项目文本的确切字符串匹配,这意味着您必须自己处理区分大小写以防万一。

    【讨论】:

    • 谢谢 King :) 当我想通过 Lname 找到它时,我会改变什么?
    • @KarlxSwanovski Lname 是什么意思?如果您的意思是Name,您可以将x.Text 替换为x.Name
    • 你给的代码是用 EmpID 找到的,我要改成用 Lname 找到什么?我对 Lname 的意思是我的示例中的第二列
    • @KarlxSwanovski Lname 是第二列,因此您可以将x.Text 替换为x.SubItems[1].Text
    • 如果第二列是x.SubItems[1].Text,为什么在empID中是x.Text而不是x.SubItems[0].Text
    猜你喜欢
    • 2010-10-08
    • 2010-11-07
    • 1970-01-01
    • 2013-12-25
    • 2019-12-17
    • 2011-08-13
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    相关资源
    最近更新 更多