如果您处理ListView控件的MouseDown
和/或MouseDoubleClick
事件,并使用该HitTest
方法确定鼠标动作的目标,您将知道哪个项目被双击。这也是确定是否单击了 NO 项的好方法(例如,单击部分填充列表中的空白区域。
如果发生单击,以下代码将在文本框中显示单击的项目,如果发生双击,则会弹出一个带有双击项目名称的消息框。
如果单击或双击发生在列表视图中未填充项目的区域,则文本框或消息框会通知 yopu 该事实。
这是一个简单的例子,根据您的需要,您将不得不稍微弄乱它。
更新:我添加了一些代码,当单击或双击列表的空白区域时清除 Listview 控件的 SelectedItems 属性。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
listView1.MouseDown += new MouseEventHandler(listView1_MouseDown);
listView1.MouseDoubleClick += new MouseEventHandler(listView1_MouseDoubleClick);
this.Load += new EventHandler(Form1_Load);
}
void Form1_Load(object sender, EventArgs e)
{
this.SetupListview();
}
private void SetupListview()
{
ListView lv = this.listView1;
lv.View = View.List;
lv.Items.Add("John Lennon");
lv.Items.Add("Paul McCartney");
lv.Items.Add("George Harrison");
lv.Items.Add("Richard Starkey");
}
void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
ListViewHitTestInfo info = listView1.HitTest(e.X, e.Y);
ListViewItem item = info.Item;
if (item != null)
{
MessageBox.Show("The selected Item Name is: " + item.Text);
}
else
{
this.listView1.SelectedItems.Clear();
MessageBox.Show("No Item is selected");
}
}
void listView1_MouseDown(object sender, MouseEventArgs e)
{
ListViewHitTestInfo info = listView1.HitTest(e.X, e.Y);
ListViewItem item = info.Item;
if (item != null)
{
this.textBox1.Text = item.Text;
}
else
{
this.listView1.SelectedItems.Clear();
this.textBox1.Text = "No Item is Selected";
}
}
}