private void listView_MouseClick(object sender, MouseEventArgs e)问题:
{
if (Program.Usergroup == "工程部" && e.Button == MouseButtons.Right && this .listView .SelectedItems .Count >0)
{
ContextMenuStrip cms = new ContextMenuStrip();
cms.Name = "cms";
cms.Items.Add("查看原始目录", null);
cms.Items.Add("修改非标信息", null);
this.ContextMenuStrip = cms;
cms.Show(listView,e.Location);
}
}
开始右键是没有菜单的,然后在Listview右键一项后出现菜单,然后不管是在Listview空白的地方还是窗体的任何一个地方右键都会出现这个菜单,好郁闷啊,要怎么样解决这个菜单只能在Listview里面选中行的时候右键才出现?
补充一个问题,可不可以图标从ImageList里面添加,代码怎么写?
12 个解决方案
#1
private ListViewItem GetItemFromPoint(ListView listView, Point mousePosition)
{
// translate the mouse position from screen coordinates to
// client coordinates within the given ListView
Point localPoint = listView.PointToClient(mousePosition);
return listView.GetItemAt(localPoint.X, localPoint.Y);
}
判断GetItemFromPoint!=null
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
{
// translate the mouse position from screen coordinates to
// client coordinates within the given ListView
Point localPoint = listView.PointToClient(mousePosition);
return listView.GetItemAt(localPoint.X, localPoint.Y);
}
判断GetItemFromPoint!=null
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
#2
是这样吗?
运算符"!="无法应用于“方法组”和“<null>”类型的操作数
if (Program.Usergroup == "工程部" && e.Button == MouseButtons.Right && GetItemFromPoint != null)提示错误:
运算符"!="无法应用于“方法组”和“<null>”类型的操作数
#3
问题解决了:
private void Form_Load(object sender, EventArgs e)不需要listView_MouseClick
{
ContextMenuStrip cms = new ContextMenuStrip();
cms.Name = "cms";
cms.Items.Add("查看原始目录", null);
cms.Items.Add("修改非标信息", null);
this.ContextMenuStrip = cms;
cms.Opening +=new CancelEventHandler(cms_Opening);
}
private void cms_Opening(object sender,CancelEventArgs e)
{
if (this.listView.SelectedItems.Count == 0) { e.Cancel = true; }
if (Program.Usergroup != "工程部") { e.Cancel = true; }
}
#4
触发事件 前面先判断是否选中项 没选就return
#5
if (listview.SelectedIndices != null && listview.SelectedIndices.Count>0)
#6
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (!e.IsSelected)
{
...
}
}
#7
这个事件是不是就是那个Opening?
貌似不行,可能是多了前面一句listview.SelectedIndices != null
几位大大,
1.我提供的解决办法是不是有什么不妥的地方?
2.在ListView选中的情况下,在Listview控件以外的窗体空白处右键也是会有菜单,可以避免吗?是不是还得判断鼠标位置是不是在ListView控件内?代码怎么写?
3.菜单添加项时为ToolStripItemCollection.Add(string text,Image image,EventHandler onClick),能说明一下这三项是怎么添加吗?目前只知道第一项是指菜单显示的文本与第三项是指定发生的事件,第二项图标实在不知道是要怎么添加,请指导一下,谢谢。
貌似不行,可能是多了前面一句listview.SelectedIndices != null
几位大大,
1.我提供的解决办法是不是有什么不妥的地方?
2.在ListView选中的情况下,在Listview控件以外的窗体空白处右键也是会有菜单,可以避免吗?是不是还得判断鼠标位置是不是在ListView控件内?代码怎么写?
3.菜单添加项时为ToolStripItemCollection.Add(string text,Image image,EventHandler onClick),能说明一下这三项是怎么添加吗?目前只知道第一项是指菜单显示的文本与第三项是指定发生的事件,第二项图标实在不知道是要怎么添加,请指导一下,谢谢。
#8
listView_MouseClick
#9
ContextMenuStrip cms = new ContextMenuStrip();现在知道怎么加图标了
cms.Name = "cms";
cms.ImageList = this.toolIcon;
ToolStripMenuItem mt1 = new ToolStripMenuItem("测试看看");
mt1.ImageKey = "Search";
cms.Items.Add(mt1);
cms.Items.Add("-");
#10
还是想知道鼠标先选中一个后,在空白处不要左键直接右键不要出现菜单
#11
#12
朕看了这么多。。。居然 懵懵懂懂。。。原谅我年少无知啊!!
!
!
#1
private ListViewItem GetItemFromPoint(ListView listView, Point mousePosition)
{
// translate the mouse position from screen coordinates to
// client coordinates within the given ListView
Point localPoint = listView.PointToClient(mousePosition);
return listView.GetItemAt(localPoint.X, localPoint.Y);
}
判断GetItemFromPoint!=null
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
{
// translate the mouse position from screen coordinates to
// client coordinates within the given ListView
Point localPoint = listView.PointToClient(mousePosition);
return listView.GetItemAt(localPoint.X, localPoint.Y);
}
判断GetItemFromPoint!=null
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
#2
是这样吗?
运算符"!="无法应用于“方法组”和“<null>”类型的操作数
if (Program.Usergroup == "工程部" && e.Button == MouseButtons.Right && GetItemFromPoint != null)提示错误:
运算符"!="无法应用于“方法组”和“<null>”类型的操作数
#3
问题解决了:
private void Form_Load(object sender, EventArgs e)不需要listView_MouseClick
{
ContextMenuStrip cms = new ContextMenuStrip();
cms.Name = "cms";
cms.Items.Add("查看原始目录", null);
cms.Items.Add("修改非标信息", null);
this.ContextMenuStrip = cms;
cms.Opening +=new CancelEventHandler(cms_Opening);
}
private void cms_Opening(object sender,CancelEventArgs e)
{
if (this.listView.SelectedItems.Count == 0) { e.Cancel = true; }
if (Program.Usergroup != "工程部") { e.Cancel = true; }
}
#4
触发事件 前面先判断是否选中项 没选就return
#5
if (listview.SelectedIndices != null && listview.SelectedIndices.Count>0)
#6
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (!e.IsSelected)
{
...
}
}
#7
这个事件是不是就是那个Opening?
貌似不行,可能是多了前面一句listview.SelectedIndices != null
几位大大,
1.我提供的解决办法是不是有什么不妥的地方?
2.在ListView选中的情况下,在Listview控件以外的窗体空白处右键也是会有菜单,可以避免吗?是不是还得判断鼠标位置是不是在ListView控件内?代码怎么写?
3.菜单添加项时为ToolStripItemCollection.Add(string text,Image image,EventHandler onClick),能说明一下这三项是怎么添加吗?目前只知道第一项是指菜单显示的文本与第三项是指定发生的事件,第二项图标实在不知道是要怎么添加,请指导一下,谢谢。
貌似不行,可能是多了前面一句listview.SelectedIndices != null
几位大大,
1.我提供的解决办法是不是有什么不妥的地方?
2.在ListView选中的情况下,在Listview控件以外的窗体空白处右键也是会有菜单,可以避免吗?是不是还得判断鼠标位置是不是在ListView控件内?代码怎么写?
3.菜单添加项时为ToolStripItemCollection.Add(string text,Image image,EventHandler onClick),能说明一下这三项是怎么添加吗?目前只知道第一项是指菜单显示的文本与第三项是指定发生的事件,第二项图标实在不知道是要怎么添加,请指导一下,谢谢。
#8
listView_MouseClick
#9
ContextMenuStrip cms = new ContextMenuStrip();现在知道怎么加图标了
cms.Name = "cms";
cms.ImageList = this.toolIcon;
ToolStripMenuItem mt1 = new ToolStripMenuItem("测试看看");
mt1.ImageKey = "Search";
cms.Items.Add(mt1);
cms.Items.Add("-");
#10
还是想知道鼠标先选中一个后,在空白处不要左键直接右键不要出现菜单
#11
#12
朕看了这么多。。。居然 懵懵懂懂。。。原谅我年少无知啊!!
!
!