【问题标题】:C# winforms. Drag eventsC#winforms。拖动事件
【发布时间】:2016-03-01 13:32:46
【问题描述】:

当我解除(结束)拖动单击时,我需要运行代码。这个事件是怎么调用的?

这是主要示例,请查看以下屏幕截图以获取更多信息:

我让我可以将汽车拖到其他图片框上,如下所示:

再重复一遍 - 我需要知道什么是 EVENT 然后你解散拖到图片框上?

【问题讨论】:

  • 你的意思是它什么时候掉下来的?或者当拖动被拒绝时?

标签: c# winforms drag-and-drop mouseevent


【解决方案1】:

在控件上释放拖动时没有事件,但您实际上并不需要。这就是我为模拟(我认为)您正在寻找的东西所做的。我使用了this stackoverflow answer提供的代码

private Point? _mouseLocation;

private void Form1_Load(object sender, EventArgs e)
{
    this.pictureBox1.MouseDown += this.pictureBox1_MouseDown;
    this.pictureBox1.MouseUp += this.pictureBox1_MouseUp;
    this.pictureBox1.MouseMove += this.pictureBox1_MouseMove;    
}

void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{  
    if ( this._mouseLocation.HasValue)
    {
        this.pictureBox1.Left = e.X + this.pictureBox1.Left - this._mouseLocation.Value.X;
        this.pictureBox1.Top = e.Y + this.pictureBox1.Top - this._mouseLocation.Value.Y;
    }
}
void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
    this._mouseLocation = null;
}

void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    //Check if you've left-clicked if you want
    this._mouseLocation = e.Location;

}

使用this._mouseLocation = null; 将鼠标位置设置为空是您的“拖动释放”代码。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 如果他说的是拖动PictureBox 本身,DragDrop 不是正确的事件。该事件在将某些内容拖入控件并放置时触发,而不是在控件本身被拖动时触发。
    • @Brandon 完全正确。你能帮助我吗? :)
    猜你喜欢
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2018-08-22
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2012-10-20
    相关资源
    最近更新 更多