首先我建了一个mainForm,在窗体里添加了一个SplitContainer控件,分别在两个panel里加入了一个listbox,分别名为SectionList和SectionData。还有一个编辑好的ContexMenuStrip,名为listContextMenu。它们的访问级别均为Internal。处理代码片段如下: private void SectionList_SelectedIndexChanged(object sender, EventArgs e)
{
SectionData.Items.Clear(); if (SectionList.SelectedIndex >= 0)
{
LoadSectionData(SectionList.Text);
}
} private void SectionList_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
SectionData.Items.Add(SectionData.SelectedItems);
listContextMenu.Show(MousePosition);
}
}
上面那段代码不能弹出菜单,就像是没有处理MouseClick事件一样。如果我把其中的listContextMenu.Show(MousePosition);移到上面的那个事件的IF里却能成功执行。我之所以使用MouseClick事件处理ContextMenuStrip是要进行一些定位还有其它细微功能的处理。在MSDN里listbox是有MouseClick事件的,但是我这里为什么不能响应呢?
{
SectionData.Items.Clear(); if (SectionList.SelectedIndex >= 0)
{
LoadSectionData(SectionList.Text);
}
} private void SectionList_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
SectionData.Items.Add(SectionData.SelectedItems);
listContextMenu.Show(MousePosition);
}
}
上面那段代码不能弹出菜单,就像是没有处理MouseClick事件一样。如果我把其中的listContextMenu.Show(MousePosition);移到上面的那个事件的IF里却能成功执行。我之所以使用MouseClick事件处理ContextMenuStrip是要进行一些定位还有其它细微功能的处理。在MSDN里listbox是有MouseClick事件的,但是我这里为什么不能响应呢?
请参考:http://blog.csdn.net/lcyhjx/archive/2008/03/05/2149461.aspx
-----------------------------------------------------------------------------
TextBox、RichTextBox、ListBox、MaskedTextBox 和 CheckedListBox 控件注意
当用户单击这些控件内的任何位置时,发生下面详细说明的事件行为。单击左键:Click、MouseClick单击右键:不引发任何单击事件双击左键:Click、MouseClick、DoubleClick,MouseDoubleClick双击右键:不引发任何单击事件
-----------------------------------------------------------------------------
谢谢哦。ListBox的任何鼠标事件都不响应。
看来我要把ListBox换成ListView了。
我觉得这应该是个bug,MSDN里是说支持的,可是实际上不支持。