在窗口内,点击鼠标右键,弹出一个可以在多项中选择其中一项的快捷菜单,如何编程?
何处有例子?
谢谢!!!

解决方案 »

  1.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <!-- saved from url=(0046)http://fason.nease.net/zhuanti/menu/right1.htm -->
    <HTML><HEAD><TITLE>自定义鼠标右键弹出式菜单</TITLE>
    <META http-equiv=Content-Type content="text/html; charset=gb2312">
    <STYLE type=text/css>.div1 {
    BORDER-RIGHT: windowframe 1px solid; BORDER-TOP: buttonface 1px solid; BORDER-LEFT: buttonface 1px solid; BORDER-BOTTOM: windowframe 1px solid
    }
    .div2 {
    BORDER-RIGHT: buttonshadow 1px solid; BORDER-TOP: window 1px solid; BORDER-LEFT: window 1px solid; BORDER-BOTTOM: buttonshadow 1px solid
    }
    .MouseOver {
    FONT-SIZE: 12px; CURSOR: hand; COLOR: highlighttext; BACKGROUND-COLOR: highlight
    }
    .MouseOut {
    FONT-SIZE: 12px; CURSOR: default; COLOR: buttontext; BACKGROUND-COLOR: buttonface
    }
    </STYLE><SCRIPT language=javascript>
    function PopupMouseRightButtonUpMenu()
    {
     if(MouseMenu.style.visibility=='visible') MouseMenu.style.visibility='hidden';
     if (event.srcElement.tagName=='A' || event.srcElement.tagName=='TEXTAREA' || event.srcElement.tagName=='INPUT' || document.selection.type!='None')
        return true;
     else
        {
         if (event.clientX+150 > document.body.clientWidth) MouseMenu.style.left=event.clientX+document.body.scrollLeft-150;
         else MouseMenu.style.left=event.clientX+document.body.scrollLeft;
         if (event.clientY+DivH > document.body.clientHeight) MouseMenu.style.top=event.clientY+document.body.scrollTop-DivH;
         else MouseMenu.style.top=event.clientY+document.body.scrollTop;
         MouseMenu.style.visibility='visible';
        }
    return false;
    }
    function DrawMouseRightButtonUpMenu(){
    DivH=2;
    //oSelection = document.selection;
    var HrStr='<tr><td align=\"center\" valign=\"middle\" height=\"2\"><TABLE border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"128\" height=\"2\"><tr><td height=\"1\" bgcolor=\"buttonshadow\"><\/td><\/tr><tr><td height=\"1\" bgcolor=\"buttonhighlight\"><\/td><\/tr><\/TABLE><\/td><\/tr>';
    var MenuItemStr1='<tr><td align=\"center\" valign=\"middle\" height=\"20\"><TABLE border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"132\"><tr><td valign=\"middle\" height=\"16\" class=\"MouseOut\" onMouseOver=\"this.className=\'MouseOver\'\" onMouseOut=\"this.className=\'MouseOut\'\" onclick=\"'
    var MenuItemStr2="<\/td><\/tr><\/TABLE><\/td><\/tr>";
    var historyMenu=['window.history.back()\">后退','window.history.forward()\">前进'];
    var SysMenu=['\">查找 <INPUT TYPE=\"text\" Size=\"10\" onkeypress=\"if (event.keyCode == 13) {MouseMenu.style.visibility=\'hidden\';var temp = this.value; this.value = \'\';return findInPage(temp)}\";\'>',
                 'document.execCommand(\'SelectAll\')\">全选',
                 'MouseMenu.style.visibility=\'hidden\';document.execCommand(\'SaveAs\',\'true\')\">另存为 ...',
                 'location.replace(\'view-source:\'+location.href)\">查看源文件',
                 'MouseMenu.style.visibility=\'hidden\';window.print()\">打印',
                 'window.location.reload()\">刷新'];var MenuStr='';
    for(i=0;i<historyMenu.length;i++)
       {
        MenuStr+=MenuItemStr1+historyMenu[i]+MenuItemStr2;
        DivH+=20;
       }
    MenuStr+=HrStr;
    for(i=0;i<arguments.length;i++)
       {
        MenuStr+=MenuItemStr1+arguments[i]+MenuItemStr2;
        DivH+=20;
       }if(arguments.length>0)
      {
       MenuStr+=HrStr;
       DivH+=2;
      }for(i=0;i<SysMenu.length;i++)
       {
        MenuStr+=MenuItemStr1+SysMenu[i]+MenuItemStr2;
        DivH+=20;
       }var aboutMenu=['MouseMenu.style.visibility=\'hidden\';alert(\'http:\/\/www.playyuer.com\\nmailto:[email protected]\')">关于 ...']
    MenuStr+=HrStr;
    for(i=0;i<aboutMenu.length;i++)
       {
        MenuStr+=MenuItemStr1+aboutMenu[i]+MenuItemStr2;
        DivH+=20;
       }var MenuTop = '<DIV id=\"MouseMenu\" class=\"div1\" style=\"position:absolute; left:0px; top:0px; width=150;height='+DivH+'; z-index:1; visibility:hidden;\">\n' +
                 '<TABLE border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"div2\">\n' +
                 '<tr>\n' +
                 '<td bgcolor=\"' + MenuBarColor+ '\" width=\"50\" valign=\"bottom\" align=\"center\"  bgcolor=\"buttonface\">\n' +
                 '<\/td>\n'+ 
                 '<td bgcolor=\"buttonface\">\n'+ 
                 '<TABLE border=\"0\" cellpadding=\"0\" cellspacing=\"0\">';
    var MenuBottom = '<\/TABLE><\/td><\/tr><\/TABLE><\/DIV>';
    document.write(MenuTop+MenuStr+MenuBottom);
    //prompt('aa',MenuTop+MenuStr+MenuBottom)
    document.body.oncontextmenu=new Function('return PopupMouseRightButtonUpMenu();');
    document.body.onclick=new Function('if(event.srcElement.tagName !=\'INPUT\') MouseMenu.style.visibility=\'hidden\'');
    document.body.onscroll=new Function('MouseMenu.style.visibility=\'hidden\';');
    document.body.onselectstart=new Function('MouseMenu.style.visibility=\'hidden\';');
    window.onresizestart=new Function('MouseMenu.style.visibility=\'hidden\';');
    }
    var NS4 = (document.layers);
    var IE4 = (document.all);
    var win = window;
    var n = 0;
    function findInPage(str) {
      var txt, i, found;
      if (str == '')
        return false;
      if (NS4) {
        if (!win.find(str))
          while(win.find(str, false, true))
            n++;
        else
          n++;
        if (n == 0)
          alert('文档搜索完毕。');
      }
      if (IE4) {
        txt = win.document.body.createTextRange();
        for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
          txt.moveStart('character', 1);
          txt.moveEnd('textedit');
        }
        if (found) {
          txt.moveStart('character', -1);
          txt.findText(str);
          txt.select();
          txt.scrollIntoView();
          n++;
        }
        else {
          if (n > 0) {
            n = 0;
            findInPage(str);
          }
          else
            alert('文档搜索完毕。');
        }
      }
      return false;
    }
    </SCRIPT><META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
    <BODY>自定义鼠标右键弹出式菜单
    <SCRIPT language=JavaScript>
    <!--
    var MenuBarColor ='#6600FF';
    DrawMouseRightButtonUpMenu();
    //-->
    </SCRIPT>
     </BODY></HTML>
      

  2.   

    不知你的具体要求,参考一下(c#,winform):
    private StringCollection GetContextMent (string roleid)
    {
    StringCollection outmenu = new StringCollection();
    outmenu.Add ("Add");
    outmenu.Add ("Edit");
    outmenu.Add ("Delete");
    outmenu.Add ("Permission Set");
    return outmenu.Count == 0 ? null : outmenu;
    }
    private void DoMenuAction (object sender, EventArgs e) 
    {
    // This is called from the context menu activated by the TreeView's left-click
    MenuItem mi = (MenuItem) sender;
    //do handle by tvwDealer.SelectedNode, mi.Text
    DoActionByMenu(this.lsvRoleList .FocusedItem .Tag .ToString () ,mi.Text);
    }
    //弹出菜单项事件处理
    public void DoActionByMenu (string roleid, string action)
    {
    switch (action)
    {
    case "Add":
    this.openEditRole ("add");
    break;
    case "Edit":
    this.openEditRole ("edit");
    break;
    case "Delete":
    DeleteRole();
    break;
    case "Permission Set":
    this.ChangeRoleEditState ("perm");
    this.InitTvwModule (roleid);
    this.editingRole = roleid;
    //this.tvwModule.Focus ();
    break;
    }
    }
    //鼠标释放事件
    private void lsvRoleList_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if (e.Button == MouseButtons.Right  && this.lsvRoleList.SelectedItems .Count != 0) 
    {
    StringCollection  actions = GetContextMent (this.lsvRoleList .FocusedItem .Tag .ToString ());
    if (actions != null) 
    {
    System.Windows.Forms.ContextMenu cm = new ContextMenu();
    foreach (string action in actions)
    {
    cm.MenuItems.Add (action, new EventHandler (DoMenuAction));
    }
    cm.Show (lsvRoleList, new Point (e.X, e.Y));
    }
    }
    }
      

  3.   

    楼上lovvver(春晖)文中的lsvRoleList是什么?不清楚。
      

  4.   

    lsvRoleList,看上去好像是ListView控件.
      

  5.   

    对,是listview控件,上面的代码我是在listview里做的。