listview设置为Details
我现在想鼠标右键listview中的行时能够有右键但是如果直接在属性ContextMenuStrip中关联,那么只要在listview中鼠标右键就会出来菜单我需要的是在listview中选中的行时鼠标右键才有菜单
应该在哪怎么判断下
我现在想鼠标右键listview中的行时能够有右键但是如果直接在属性ContextMenuStrip中关联,那么只要在listview中鼠标右键就会出来菜单我需要的是在listview中选中的行时鼠标右键才有菜单
应该在哪怎么判断下
private void listView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (this.listView1.GetItemAt(e.X, e.Y) != null)
{
this.listView1.ContextMenuStrip = this.contextMenuStrip1;
}
else
{
this.listView1.ContextMenuStrip = null;
}
}
}
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
if (this.listView1.SelectedIndices.Count == 0)
{
e.Cancel = true;
}
}这样的话,鼠标的事件也是好使的.
第一次可以
比如我listview中开始没有一行,这样鼠标右键是无效的
然后我加了一行,现在鼠标右键有了,
但是这个时候我鼠标右键其他的地方也会有菜单了
this.listView1.ContextMenuStrip = null;呵呵
对Listview的菜单,在开始的时候不要设置,而是通过下面的代码来设置:
private void listView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (this.listView1.GetItemAt(e.X, e.Y) != null)
{
cm.Show( listView1 , new Point(e.X,e.Y、));
}
}
}
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
//如果没有选中的行则不显示这个菜单
if (this.listView1.SelectedIndices.Count == 0)
{
e.Cancel = true;//取消显示
}
}