相关疑难解决方法(0)

构建Linq-to-Events拖放代码的最佳方法是什么?

我正在尝试处理拖放交互,包括鼠标按下,鼠标移动和鼠标移动.

以下是我的解决方案的简化版本:

  • 在鼠标按下时,创建一个椭圆并将其添加到画布
  • 在鼠标移动时,重新定位椭圆以跟随鼠标
  • 在鼠标向上时,更改画布的颜色,以便明显拖动哪一个.

    var mouseDown = Observable.FromEvent<MouseButtonEventArgs>(canvas, "MouseLeftButtonDown");
    var mouseUp = Observable.FromEvent<MouseButtonEventArgs>(canvas, "MouseLeftButtonUp");
    var mouseMove = Observable.FromEvent<MouseEventArgs>(canvas, "MouseMove");
    
    Ellipse ellipse = null;
    
    var q = from start in mouseDown.Do(x =>
                {
                    // handle mousedown by creating a red ellipse, 
                    // adding it to the canvas at the right position
                    ellipse = new Ellipse() { Width = 10, Height = 10, Fill = Brushes.Red };
                    Point position = x.EventArgs.GetPosition(canvas);
                    Canvas.SetLeft(ellipse, position.X);
                    Canvas.SetTop(ellipse, position.Y);
                    canvas.Children.Add(ellipse);
                })
            from delta in mouseMove.Until(mouseUp.Do(x …
    Run Code Online (Sandbox Code Playgroud)

.net drag-and-drop system.reactive c#-4.0

5
推荐指数
1
解决办法
425
查看次数

标签 统计

.net ×1

c#-4.0 ×1

drag-and-drop ×1

system.reactive ×1