【发布时间】:2011-01-02 19:57:06
【问题描述】:
我有一个包含一些项目的 ListView。 ListView 定义了一些组,一些列,并添加了一些项目。 ListView 也设置了 ContextMenu。
在 ContextMenu 的 Opening 事件中,我将检查是否在 ListView 项上打开了上下文菜单。所以,我做到了:
private void CtxMenuProcess_Opening(object sender, CancelEventArgs e)
{
ContextMenuStrip ctxMenuStrip = (ContextMenuStrip)sender;
ListViewHitTestInfo hitTestInfo = LstViewAdminApp.HitTest(LstViewAdminApp.PointToClient(Control.MousePosition));
if (hitTestInfo.Item != null) {
//....
}
}
很遗憾,没有成功。
感觉ctxMenuStrip的坐标是错误的,但是试了很多“变种”都没有成功,而且ListView.HitTest的文档很差。
有人可以帮帮我吗?
进一步调查并没有带来任何解决方案。我开始怀疑 ListView 控件的初始化。这是我设置的非默认属性:
- 激活 = OneClick
- 列 = 列 [3]
- ContextMenuStrip = ContextMenu
- 停靠 = 填充
- FullRowSelect = true
- GridLines = true
- 组 = 组 [3]
- HideSelection = 假
- LabelWrap = 假
- 排序 = 升序
- 查看 = 详细信息
【问题讨论】:
-
Location属性没有意义。 -
谢谢 SLaks。我已经注意到stackoverflow.com/questions/3443232/…
-
我认为 ListView.HitTest 需要客户端坐标。但是还是不行。
标签: c# .net listview contextmenu