如何在vb.net中通过拖动鼠标更改进度条值
我正在开发一个媒体播放器,我正在尝试使用鼠标光标更改进度条的值。如何在vb.net中通过拖动鼠标更改进度条值,vb.net,Vb.net,我正在开发一个媒体播放器,我正在尝试使用鼠标光标更改进度条的值。 我想要的是在单击并拖动鼠标光标后设置进度条的值。进度条不是用于此操作的正确控件。您应该使用轨迹栏 但是,它可以工作,约-10优雅点。ProgressBar最棘手的问题是,它可以为进度设置动画。这使得它对鼠标移动的反应很慢。可以禁用该动画,但不能完全禁用。你能得到的最接近的是: Private Shared Sub ChangeProgress(bar As ProgressBar, e As MouseEventArgs)
我想要的是在单击并拖动鼠标光标后设置进度条的值。进度条不是用于此操作的正确控件。您应该使用轨迹栏 但是,它可以工作,约-10优雅点。ProgressBar最棘手的问题是,它可以为进度设置动画。这使得它对鼠标移动的反应很慢。可以禁用该动画,但不能完全禁用。你能得到的最接近的是:
Private Shared Sub ChangeProgress(bar As ProgressBar, e As MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim mousepos = Math.Min(Math.Max(e.X, 0), bar.ClientSize.Width)
Dim value = CInt(bar.Minimum + (bar.Maximum - bar.Minimum) * mousepos / bar.ClientSize.Width)
'' Disable animation, if possible
If value > bar.Value And value < bar.Maximum Then
bar.Value = value + 1
bar.Value = value
Else
bar.Value = value
End If
End If
End Sub
这是可行的,你会注意到达到100%有点尴尬。但是,实际上,使用轨迹栏代替。它就是这样做的。进度条不是用于此操作的正确控件。您应该使用轨迹栏 但是,它可以工作,约-10优雅点。ProgressBar最棘手的问题是,它可以为进度设置动画。这使得它对鼠标移动的反应很慢。可以禁用该动画,但不能完全禁用。你能得到的最接近的是:
Private Shared Sub ChangeProgress(bar As ProgressBar, e As MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim mousepos = Math.Min(Math.Max(e.X, 0), bar.ClientSize.Width)
Dim value = CInt(bar.Minimum + (bar.Maximum - bar.Minimum) * mousepos / bar.ClientSize.Width)
'' Disable animation, if possible
If value > bar.Value And value < bar.Maximum Then
bar.Value = value + 1
bar.Value = value
Else
bar.Value = value
End If
End If
End Sub
这是可行的,你会注意到达到100%有点尴尬。但是,实际上,使用轨迹栏代替。它就是这样做的。进度条不是用于此操作的正确控件。您应该使用轨迹栏 但是,它可以工作,约-10优雅点。ProgressBar最棘手的问题是,它可以为进度设置动画。这使得它对鼠标移动的反应很慢。可以禁用该动画,但不能完全禁用。你能得到的最接近的是:
Private Shared Sub ChangeProgress(bar As ProgressBar, e As MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim mousepos = Math.Min(Math.Max(e.X, 0), bar.ClientSize.Width)
Dim value = CInt(bar.Minimum + (bar.Maximum - bar.Minimum) * mousepos / bar.ClientSize.Width)
'' Disable animation, if possible
If value > bar.Value And value < bar.Maximum Then
bar.Value = value + 1
bar.Value = value
Else
bar.Value = value
End If
End If
End Sub
这是可行的,你会注意到达到100%有点尴尬。但是,实际上,使用轨迹栏代替。它就是这样做的。进度条不是用于此操作的正确控件。您应该使用轨迹栏 但是,它可以工作,约-10优雅点。ProgressBar最棘手的问题是,它可以为进度设置动画。这使得它对鼠标移动的反应很慢。可以禁用该动画,但不能完全禁用。你能得到的最接近的是:
Private Shared Sub ChangeProgress(bar As ProgressBar, e As MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim mousepos = Math.Min(Math.Max(e.X, 0), bar.ClientSize.Width)
Dim value = CInt(bar.Minimum + (bar.Maximum - bar.Minimum) * mousepos / bar.ClientSize.Width)
'' Disable animation, if possible
If value > bar.Value And value < bar.Maximum Then
bar.Value = value + 1
bar.Value = value
Else
bar.Value = value
End If
End If
End Sub
这是可行的,你会注意到达到100%有点尴尬。但是,实际上,使用轨迹栏代替。它就是这样做的。我正在尝试在进度条mousemove事件上使用mouseposition.x。您是否尝试过AddHandler->MouseDown/mousemove/MouseUp/MouseClick,[方法名称]的地址来控制progressBar1.Value,同时考虑到progressBar用户界面的.Minimum和.Maximum以及边距。。。不要指望有人会拒绝你的申请。所以这不是一个代码项目自动生成器。不,我不期望这个lol:v顺便说一句,我得到了我的解决方案,有人比你好:顺便说一句,这个程序只是不知道如何不出售。我正在尝试使用mouseposition.x在进度条mousemove事件上你试过AddHandler->MouseDown/MouseMouseMove/MouseUp/MouseClick,AddressOf吗[方法名称]要控制progressBar1.Value,考虑progressBar用户界面的最小值和最大值以及边距…不要期望有人能够控制你的应用程序。所以不是一个代码项目自动生成器。不,我不期望这个lol:v顺便说一句,我得到了我的解决方案,有人比你好:顺便说一句,这个程序只是不知道怎么不是f或者出售。我正在尝试在进度条mousemove事件上使用mouseposition.x。您是否尝试过AddHandler->MouseDown/mousemove/MouseUp/MouseClick,AddressOf[方法名称]要控制progressBar1.Value,考虑progressBar用户界面的最小值和最大值以及边距…不要期望有人能够控制你的应用程序。所以不是一个代码项目自动生成器。不,我不期望这个lol:v顺便说一句,我得到了我的解决方案,有人比你好:顺便说一句,这个程序只是不知道怎么不是f或者出售。我正在尝试在进度条mousemove事件上使用mouseposition.x。您是否尝试过AddHandler->MouseDown/mousemove/MouseUp/MouseClick,AddressOf[方法名称]要控制progressBar1.Value,考虑progressBar用户界面的最小值和最大值以及边距…不要期望有人能够控制你的应用程序。所以不是一个代码项目自动生成器。不,我不期望这个lol:v顺便说一句,我得到了我的解决方案,有人比你好:顺便说一句,这个程序只是不知道怎么不是f或者出售。非常感谢你的回答。我正在尝试寻找一个替代控件,如轨迹栏,但它看起来很难看。也许我必须使用自定义控件。谢谢你的回答。我正在尝试寻找一个替代控件,如轨迹栏,但它看起来很难看。也许我必须使用自定义控件。谢谢你的回答。我正在尝试寻找替代控件像trackbar一样的控件,但它看起来很难看也许我必须使用自定义控件谢谢你的回答我正在尝试寻找像trackbar一样的替代控件,但它看起来很难看也许我必须使用自定义控件