本段代码实现的目标:
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));
}
}
}