这是我的ListBox MouseMove事件的代码:
private void lbxItems_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left) //this one is good
{
lbxItems.DoDragDrop("Copy Text 1", DragDropEffects.Copy);
}
else if (Control.ModifierKeys == Keys.Alt && e.Button == MouseButtons.Left) //this desn't work
{
lbxItems.DoDragDrop("Copy Text 2", DragDropEffects.Copy);
}
}
仅e.Button == MouseButtons.Left
条件可以正常工作,但Control.ModifierKeys == Keys.Alt
没有。我想知道ListBox控件是否可以识别ALT键+鼠标左键组合。有人可以建议吗?
答案 0 :(得分:1)
要使其正常运行,我只需先评估Control.ModifierKeys == Keys.Alt
条件,然后将e.Button == MouseButtons.Left
放入else if
语句中。因此,将始终首先检查ALT +鼠标左键。
private void lbxItems_MouseMove(object sender, MouseEventArgs e)
{
if (Control.ModifierKeys == Keys.Alt && e.Button == MouseButtons.Left)
{
lbxItems.DoDragDrop("Copy Text 1", DragDropEffects.Copy);
}
else if (e.Button == MouseButtons.Left)
{
lbxItems.DoDragDrop("Copy Text 2", DragDropEffects.Copy);
}
}
另外,我必须指出它不是Control.ModifierKeys == Keys.Alt
不起作用,只是原始代码从未有机会运行else if
语句。
答案 1 :(得分:0)
你不能像你那样做。您需要首先使用相关的按键处理程序捕获Alt键并将其存储在某个共享变量中,然后当鼠标移动时,您可以通过访问共享变量来检查是否按下了alt键。