【问题标题】:Handling ContextMenuStrip on ListView处理 ListView 上的 ContextMenuStrip
【发布时间】: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 = 假
  • 排序 = 升序
  • 查看 = 详细信息

【问题讨论】:

标签: c# .net listview contextmenu


【解决方案1】:

不久前我在做类似的事情时,发现this example 中的代码非常有用。

【讨论】:

  • 谢谢,但我无法使用 Windows 消息来解决我的问题。同样的代码也应该在 Linux 下的 Mono 中运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
相关资源
最近更新 更多