【发布时间】:2011-02-16 00:15:38
【问题描述】:
如果我使用两个事件处理程序,PreviewMouseLeftButtonDown 和 PreviewMouseMove。我遇到的问题是触发 PreviewMouseLEftButtonDown 时一切正常,但由于它是拖放操作,所以左键保持向下。因此,当他们按住左键时,PreviewMouseMove EventHandler 应该正在处理它,但直到他们释放鼠标左键后才会调用它
这是第一个被调用的内容
private void FieldItemGrid_PreviewMouseLeftButtonDown(object sender, MouseEventArgs e)
{
down = e.GetPosition(this);
Grid fieldItemGrid = (Grid)sender;
fieldItemGrid.Background = Brushes.White;
_isDown = true;
_startPoint = e.GetPosition(this);
_originalElement = fieldItemGrid;
this.CaptureMouse();
e.Handled = true;
_selectedElement = fieldItemGrid;
DragStarted(e.GetPosition(this));
}
这里一切正常,但问题是,如果他们在按住鼠标的同时移动鼠标,它不会执行 PreviewMouseMove 的以下处理程序
private void FieldItemGrid_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (_isDown)
{
if (_selectedElement != null)
{
DragDrop.DoDragDrop(_selectedElement, _selectedElement, DragDropEffects.Move);
}
if (_isDragging)
{
DragMoved(e.GetPosition(this));
}
}
}
有没有办法解决这个问题?这样在我释放鼠标左键之前不会阻止我点击其他事件处理程序?
【问题讨论】: