c# - 从ListViewItem中删除焦点

时间:2013-11-22 03:10:52

标签: c# listview focus listviewitem

我正在开发一个供个人使用的项目(简单的电话簿)。在这里你可以看看它的样子:

图片http://s24.postimg.org/e37syu5x1/screenshot_66.png

因此,首先,您必须在txtSearch中键入内容,然后按下旁边的“搜索”按钮。该按钮执行以下操作:

private void toolStripButton1_Click_1(object sender, System.EventArgs e)
    {
        txtSearch_TextChanged();
    }

其中 txtSearch_TextChanged(); 是:

 void txtSearch_TextChanged()
    {
        foreach (ListViewItem item in listView1.Items)
        {
            //Selected = true, won't show until the listview has focus, but setting it to true puts it in the
            //SelectedItems collection.
            if (item.Text.ToLower().StartsWith(txtSearch.Text.ToLower()))
            {
                item.Selected = true;
                item.BackColor = Color.CornflowerBlue;
                item.ForeColor = Color.White;
            }
            else
            {
                item.Selected = false;
                item.BackColor = Color.White;
                item.ForeColor = Color.Black;
            }

        }
        //When the selection is narrowed to one the user can stop typing
        if (listView1.SelectedItems.Count == 1)
        {
            listView1.Focus();                  
        }

    }

问题在于我搜索的联系人仍然被选中(或专注?) - 在这种情况下, 4 ,因为我正在搜索 4

我尝试将取消焦点()附加到 RefreshAll(),但遗憾的是没有成功:

void Unfocus()
    {
        if (listView1.SelectedItems.Count != 0)
        {
            listView1.SelectedItems[0].Selected = false;
        }
        if (listView1.FocusedItem != null)
        {
            listView1.FocusedItem.Focused = false;
        }
    }

void RefreshAll()
    {
            txtSearch.Text = "";
            UserCount();
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox5.Text = "";
            textBox6.Text = "";
            dateTimePicker1.Value = DateTime.Now;
            textBox1.ReadOnly = false;
            textBox2.ReadOnly = false;
            textBox3.ReadOnly = false;
            textBox4.ReadOnly = false;
            textBox5.ReadOnly = false;
            textBox6.ReadOnly = false;
            dateTimePicker1.Enabled = true;
            toolStripEdit.Enabled = false;
            Unfocus();

    }

此外,我想要以下内容:当我搜索联系人并找到它时,它显示为列表视图中的唯一项目(列表视图不应包含其他联系人,除了我正在搜索的那个(成功) )。在这种情况下,它将 4 。顺便说一下,它应该是这样的:

图片http://s24.postimg.org/r8nb4xzsl/screenshot_66.png

说到这一点,经过多次尝试后,我陷入了困境:

listView1.Clear();

2 个答案:

答案 0 :(得分:0)

试试这个

listView1.SelectedIndex = -1

有关详细信息,请参阅this

答案 1 :(得分:0)

哦,问题是我没有看到几行代码用于为所选项目分配一些不同的颜色......我删除了它,现在一切正常。