首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Trackbar有明显的未修复的bug?

Trackbar有明显的未修复的bug?
EN

Stack Overflow用户
提问于 2017-12-05 05:31:12
回答 1查看 229关注 0票数 1

当我将轨迹栏添加到窗体并设置

代码语言:javascript
复制
    Me.TrackBar1.Minimum = 0
    Me.TrackBar1.Maximum = 100
    Me.TrackBar1.LargeChange = 10
    Me.TrackBar1.SmallChange = 10
    Me.TrackBar1.TickFrequency = 10

..。轨迹条显示为berzerk:

我可以通过拖动栏来选择任何较小的值。跟踪条不再停留在10、20、30等值上。我可以手动选择任何较小的值。

我通过添加以下代码来确认这一点:

代码语言:javascript
复制
Private Sub TrackBar1_ValueChanged(sender As Object, e As EventArgs) Handles TrackBar1.ValueChanged

    Me.Text = Me.TrackBar1.Value

End Sub

我是否忽略了文档中的任何内容,或者是Framework4.6.1中的bug?

EN

回答 1

Stack Overflow用户

发布于 2017-12-05 11:45:23

我不知道你的问题是问什么,但经过思考,我终于明白了你问的是什么。这是你的问题:

我可以通过拖动栏来选择任何较小的值。跟踪条不再停留在10、20、30等值上。我可以手动选择任何较小的值。

SmallChange的文档中写道:

当用户按下其中一个箭头键时,

属性会根据在SmallChange属性中设置的值而变化。

LargeChange的文档是这样写的:

当用户按PAGE UP或PAGE DOWN键或单击滚动框任一侧的轨迹栏时,

属性会根据在LargeChange属性中设置的值而变化。

澄清了你的问题

您询问的是,如果您使用鼠标,那么跟踪条的值不会随着指定的大小变化而变化,而不是使用键盘,在您的情况下是10。它实际上是递增/递减1,所以它是1,2,3等等。但是你想让它变成10,20,30等等。

解决方案

您可以处理Scroll事件并检查该值是否为10的倍数,如果是,则不执行任何操作。如果不是,则将其更改为10的倍数。

VB.NET

代码语言:javascript
复制
Private Sub trackBar1_Scroll(ByVal sender As Object, ByVal e As EventArgs)
    Dim bar = CType(sender, TrackBar)
    Dim isMultipleOfTen As Boolean = bar.Value Mod bar.SmallChange = 0
    If isMultipleOfTen Then
        Return
    End If

    bar.Value = bar.SmallChange * ((bar.Value + bar.SmallChange / 2) / bar.SmallChange)
End Sub

C#

代码语言:javascript
复制
private void trackBar1_Scroll(object sender, EventArgs e)
{
    var bar = (TrackBar)sender;
    bool isMultipleOfTen = bar.Value % bar.SmallChange == 0;
    if (isMultipleOfTen)
    {
        return;
    }

    bar.Value = bar.SmallChange * ((bar.Value + bar.SmallChange / 2) / bar.SmallChange);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47642299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档