分离鼠标按下和鼠标单击事件

时间:2014-01-01 19:15:43

标签: c# winforms drag

我有两个连接到控件的事件。鼠标单击事件播放音频文件。由鼠标按下,鼠标移动和鼠标向上组成的拖动事件垂直拖动控件。通过垂直拖动控件,控件将被分配不同的歌曲。 我遇到的问题是,当我拖动控件时,音乐会播放。我不想要这个,因为这是一个拖动操作。 只有在单击控件并移动音符时才能播放音乐。 我认为设定边界,例如当控制只移动5个像素播放声音,否则拖动控制应解决问题,但我试图创建它们失败。

请您使用代码段来指导如何解决此问题。 谢谢。 拖动

   int Locked_yLoc; int index;
   private void StartDrag(object sender, MouseEventArgs e)
   {
       if (e.Button == MouseButtons.Left)
       {
           sp1.SoundLocation = this.pitch + ".wav";
           sp1.Play();
           tm1.Interval = 100 * this.noteDuration;
           tm1.Start();

           isDragging = true;
           pitch = e.Y;
           this.Location = new Point(this.Location.X, pitch);
       }
   }

   private void StopDrag(object sender, MouseEventArgs e)
   {
       if (e.Button == MouseButtons.Left)
       {
           isDragging = false;
           this.Location = new Point(this.Location.X, Locked_yLoc);
           pitch = index;
           //lbl8.Text = pitch.ToString();
       }
   }

   private void OnDrag(object sender, MouseEventArgs e)
   {
       if (isDragging)
       {
           this.Top = this.Top + (e.Y - pitch);

           Locked_yLoc = (int)Math.Round((this.Top + (e.Y - pitch)) / 10.0) * 10;
           for (int i = 0; i < yLocation.Length; i++)
           {
               if (Locked_yLoc == yLocation[i])
               {
                   index = CorrPitch[i];
               }
           }
       }
   } 

点击

   private void MusicNote_MouseClick(object sender, MouseEventArgs e)
   {
       if (e.Button == MouseButtons.Left)
       {
           sp1.SoundLocation = this.pitch + ".wav";
           sp1.Play();
           tm1.Interval = 100 * this.noteDuration;
           tm1.Start();

       }
   }

0 个答案:

没有答案