为什么我点击某个刻度,不是跳到最后就是跳到第一个值,有没有实现那个功能的,鼠标点击哪刻度就在哪。看了很多别的帖子回复,但是功能没有实现的。

解决方案 »

  1.   

    把控件的LargeChange和SmallChange改成一样就行了
      

  2.   

    只有一个属性 LargeChange 能调整下鼠标点击时移动的刻度数,调小一点能不至于一下到头,不过点哪刻哪没有直接的办法,要不在点击事件里计算下坐标吧。
      

  3.   

    private Point lastPoint = Point.Empty; 
    private void trackBar1_MouseDown(object sender, MouseEventArgs e) 

       lastPoint.X = e.X; 
       lastPoint.Y = e.Y; 
       if (e.X > this.trackBar1.Minimum && e.X < this.trackBar1.Maximum) 
          this.trackBar1.Value = e.X; 
       else if (e.X > this.trackBar1.Maximum) 
               this.trackBar1.Value = this.trackBar1.Maximum; 
           else 
               this.trackBar1.Value = this.trackBar1.Minimum; 
    }这段代码为什么实现不了呢?
      

  4.   

    e.X > this.trackBar1.Maximum,这能比较吗,X是坐标,你还没有转化成Value,这需要计算的
      

  5.   

    e.X > this.trackBar1.Maximum,这能比较吗,X是坐标,你还没有转化成Value,这需要计算的
      

  6.   

    e.X Y 是鼠标位置,和 Minimum Maximum 就不是一个概念,用截图工具量一下 TrackBar 第一个刻度到左边线的距离,最后一个刻度到右边线的距离,用这个来和 e.X 比较
      

  7.   

    e.X不是鼠标位置的横坐标吗?也是一个值啊,应该可以比较吧,我的鼠标事件绑在控件上的,E.X应该是到控件开始位置的值吧
      

  8.   

    你说的没错,但是 Minimum Maximum 这两个不是坐标值,不能比较