我刚才遇到了这个问题,因为我正在实现一个内置的视频播放器,并且希望用户能够更改视频的位置,但我不想通过发送 SetPosition 调用来重载视频播放 API勾选用户在前往其最终目的地的途中经过。
这是我的解决方案:
首先,方向键是个问题。您可以通过计时器或其他机制尽力处理箭头键,但我发现它比它值得更痛苦。因此,如@Matthias 所述,将属性 SmallChange 和 LargeChange 设置为 0。
对于鼠标输入,用户将不得不点击向下,移动它,然后松开,这样处理鼠标按下、鼠标向上和轨迹栏的滚动事件,如下所示:
private bool trackbarMouseDown = false;
private bool trackbarScrolling = false;
private void trackbarCurrentPosition_Scroll(object sender, EventArgs e)
{
trackbarScrolling = true;
}
private void trackbarCurrentPosition_MouseUp(object sender, MouseEventArgs e)
{
if (trackbarMouseDown == true && trackbarScrolling == true)
Playback.SetPosition(trackbarCurrentPosition.Value);
trackbarMouseDown = false;
trackbarScrolling = false;
}
private void trackbarCurrentPosition_MouseDown(object sender, MouseEventArgs e)
{
trackbarMouseDown = true;
}