百科知识

VB中按要求移动控件到窗体指定位置?我使用DragDrop事件,

2006-06-19 19:48:21z***
我使用DragDrop事件,当鼠标点击控件的左上角并移动该控件则能到鼠标移到的指定位置,但 鼠标在控件的其它位置点击并移动该控件,能移动控件却不能到达指定位置,有偏差。该如何解决? 下附相关工程文件。VB中按要求移动控件到窗体指定位置?我使用DragDrop事件,当鼠标点击控件的左上角并移动该控件则能到鼠标移到的指定位置,但鼠标在控件的其它位置点击并移动该控?

最佳回答

  •   其实没有偏差,当你释放鼠标时控件将移动到鼠标所在的点上(即控件的左上角等于鼠标当前点),由于拖动时的黑框并不是以左上角跟随鼠标移动的,所以就造成视觉习惯上的误差。 解决方法是:设置picture1的dragmode为0(手动),并定义两个变量用于开始拖动时的鼠标位置: Dim cx as Long, cy as Long 在picture1的mousedown事件中记录当前鼠标位置并开始拖动: Picture1。
      Drag 1 cx = X cy = Y 在其mouseup事件中结束拖动: Picture1。Drag 2 在FORM的dragdrop事件中移动控件: Source。Move X-cx, Y-cy 经过以上修改后就可以准确地移动到黑色边框所示的位置了。
      之所以将Picture1的DragMode改为手动,是因为在自动模式下是不会触发Picture1的MouseDown事件的,当然也就无法记录原始的鼠标位置了。
    2006-06-20 14:14:53
  • 很赞哦! (55)