【问题标题】:How do you make a Winform track bar (slider) behave sensibly on a touch-screen monitor你如何使 Winform 轨迹栏(滑块)在触摸屏显示器上表现得更合理
【发布时间】:2009-04-16 11:15:48
【问题描述】:

修改 Winforms 轨迹栏以便当用户单击它时轨迹栏跳转到鼠标位置的最简单方法是什么?

默认情况下,轨迹栏移动到当前位置和鼠标点击位置之间的中间位置。

更新:我正在尝试这样做,以便可以使用触摸屏上的轨迹栏。使用触摸屏拖动非常困难,因此要求轨迹栏直接跳转到用户点击的位置。

【问题讨论】:

  • 默认行为是让track box移动一个由“LargeChange”指定的距离,而不是box和click之间距离的一半。
  • 感谢您的信息,我从来没有真正理解它在做什么,我一直认为它有点随机。

标签: winforms slider touchscreen trackbar


【解决方案1】:

我从来没有这样做过,但我会先查看鼠标点击的位置。然后我可以计算出点击的位置在轨迹栏的当前范围内有多远,并将跟踪器的位置设置为该点。

我会首先研究覆盖控件并操作与鼠标相关的事件函数(例如OnMouseDown())。请注意,在某些情况下,调用覆盖函数的基类实现可能很重要,请务必根据具体情况进行考虑。 (我刚刚遇到了这个问题,所以它在我的脑海中很新鲜。)

请注意,只有在您有非常令人信服的理由时,才应该以这种方式更改标准控件的行为。它们是标准的,因为它们在数百/数千个程序中以可预测的方式运行。仅仅为你的程序做一些不同的行为可能会违反Principle of Lease Astonishment。我能想到的唯一一个希望按照您描述的方式运行的轨迹栏是用于某种媒体播放器。

编辑: 根据你的评论,是的,我认为你有一个令人信服的理由。 :)

【讨论】:

  • 是的,我明白这一点,唯一的问题是我的软件在触摸屏上运行,而默认的轨迹栏行为在触摸屏上确实不起作用。基本上任何涉及拖动它的事情几乎是不可能的,所以我能想到的最好的解决方案是让滑块直接跳到用户点击的地方。
  • 啊,好主意。现在我知道两种情况。感谢您的澄清。 :)
猜你喜欢
  • 2012-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
相关资源
最近更新 更多