“拖动”按钮未触发事件 c#

本文关键字:事件 拖动 按钮 | 更新日期: 2023-09-27 18:31:54

正如标题所示,我在使 DragOver 事件正常运行时遇到问题。我在一个表单上有 100 多个按钮,我希望当将图片框拖到它们上面时,它们的颜色会发生变化。我已经设置了所有按钮 AllowDrop = true,并在方法中包含以下代码。

private void ShipOver(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.None;
    Button b = (Button)sender;
    b.BackColor = Color.Green;
    label22.Text = "";
}

我不明白为什么这行不通。我还有一个 DragLeave 方法,它只是将颜色更改为不同的颜色。

需要注意的一件事是,我在按钮上拖动的项目比按钮本身大。不确定这是否会产生影响。

“拖动”按钮未触发事件 c#

您需要将事件连接到您的方法。 如果所有按钮都在单个面板中,则可以在窗体的构造函数中执行以下操作:

foreach (Button b in panel1.Controls.OfType<Button>()) {
  b.DragOver += ShipOver;
}

同样的原则也适用于 DragLeave 事件。