最近用WInForm,给listview添加右键菜单contextMenustrip时,发现单击listview空白处时无法触发click事件,网上说是listview的问题,特于此记录。
WinForm中ListView的Click事件,只有在有选中项的时候才触发,点击其空白处(无选中项)是不会触发Click事件的
private void lstVdoc_MouseClick(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Right)
{
if(lstVdoc.GetItemAt(e.X,e.Y) != null)
{
if (curShowPath == "")
curShowPath = Serverlstfile.First().Root;
var filename = curShowPath + "\\" + lstVdoc.SelectedItems[0].Text;
var item = Serverlstfile.Where(s => s.Fullname == filename).First();
contextMenuFile.Show(Cursor.Position.X, Cursor.Position.Y);
if (item.IsDirectory)
{
contextMenuFile.Items[0].Enabled = true;
}
else
{
contextMenuFile.Items[0].Enabled = false;
}
}
else
{
***//点击空白处不会触发***
contextMenuBlank.Show(Cursor.Position.X, Cursor.Position.Y);
}
}
}
这里用的替代方法是ListView的MoveUp事件
private void lstVdoc_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (lstVdoc.GetItemAt(e.X, e.Y) == null)
{
contextMenuBlank.Show(Cursor.Position.X, Cursor.Position.Y);
}
}
}