【发布时间】:2012-01-24 15:46:05
【问题描述】:
我有一个图片框,用户可以向上或向下拖动它。
所讨论的程序是一个复杂的钢琴谱表编辑器,因此在谱表上实现音符移动的唯一方法是使用多个 if 语句和修改坐标。
问题是用户无法将 PictureBox 组件向下移动,但是当对象被向上拖动时,什么也没有发生。该类继承自 PictureBox。
我想强调的是,PictureBox 在向下拖动时可以工作,但在向上拖动时不会移动。拖动是间隔进行的,即 PictureBox 只能放置在某些地方(因此需要特定的坐标)。
【问题讨论】:
-
(无关:我会发现您的
Top支票非常如果它们在number-line order 中更容易阅读 - 您可能同意也可能不同意) -
sn-p 不足以诊断它。典型的问题是移动控件也会改变鼠标的相对位置。
-
奇怪的是,当我向下移动鼠标时它可以工作——实际上它工作得很好。但是当我向上移动鼠标时,它没有。我在这两种情况下使用几乎相同的代码。
-
您应该发布更多代码。例如,您在哪里附加
MouseMove处理程序?您发布的代码仅在释放按钮时将其分离。你确定你没有在OnDrag中更改currentY(顺便说一句,这不是MouseMove处理程序的好名字)?此外,尚不清楚此代码的位置。在你的PictureBox-派生类里面?为什么你的处理程序是公开的?通过这种方式很难找到问题。有比使用多个 if 语句更好的方法来解决这个问题,但是当它的工作原理不完全清楚时,很难提出解决方案。 -
@Groo 我编辑了上面的代码以显示处理程序的附加。
currentY在“OnDrag”中没有改变,这段代码位于我的 PictureBox 派生类中。
标签: c# winforms drag-and-drop picturebox