【发布时间】:2019-06-01 09:24:37
【问题描述】:
我正在尝试垂直拖动乐谱,上下拖动乐谱。然而,与其一直拖拽,我希望只允许将音符拖到特定的间隔(仅特定的 y 坐标)。例如,在垂直线上,可以将音符拖到坐标 (0,0)、(0,5) 或 (0,10) 上。
下面是我的相关代码:
private Point MouseDownLocation;
private void Note_MouseDown(object sender, MouseEventArgs e)
{
foreach (MusicNote mn in panel2.Controls.OfType<MusicNote>())
{
if (sender == mn)
{
if (e.Button == MouseButtons.Left)
{
MouseDownLocation = e.Location;
}
}
}
}
private void Note_MouseMove(object sender, MouseEventArgs e)
{
foreach(MusicNote mn in panel2.Controls.OfType<MusicNote>())
{
if (sender == mn)
{
if (e.Button == MouseButtons.Left)
{
mn.Top = e.Y + mn.Top - MouseDownLocation.Y;
}
}
}
}
感谢任何帮助。谢谢!
【问题讨论】:
-
你可以使用这个伟大的nuget package,它将为你完成艰苦的工作
-
@styx 不幸的是这是一个大学项目,所以我需要编写所有代码。
标签: c# forms drag-and-drop picturebox drag