在ListBox中实现右键菜单,需要注意的细节



本段代码实现的目标:
  blue区域不显示contextmenu,橙色范围显示contextmenu
  就是当mouse右键点击listbox中的存在项上,才显示contextmenu,其他范围不显示contextmenu.
private void listBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
  {
   if(e.Button == MouseButtons.Right)
   {
    //listBoxItem Total Height
    int listBoxItemToTalHeight = listBox1.Items.Count * listBox1.ItemHeight;
    int currentIndex = e.Y /12;
    if(SqlInt32.Mod(currentIndex,12) == 0)
    {
     currentIndex = currentIndex;
    }
    if(e.Y > listBoxItemToTalHeight)
    {
     this.listBox1.ContextMenu = this.contextMenu1;
     contextMenu1.MenuItems[0].Visible = false;
    }
    else
    {
     this.listBox1.ContextMenu = this.contextMenu1;
     contextMenu1.MenuItems[0].Visible = true;
     if(listBox1.SelectedItem != null && currentIndex != listBox1.SelectedIndex)
     {
      this.listBox1.SetSelected(listBox1.SelectedIndex,false);
     }
     this.listBox1.SetSelected(currentIndex,true);
     this.listBox1.ContextMenu.Show(listBox1,new Point(e.X,e.Y));
    }
   } 
  }

posted @ 2006-04-20 17:00  RicoRui  阅读(2074)  评论(1编辑  收藏  举报