进度条点击=>改变当前的赛道位置

时间:2010-10-27 19:06:44

标签: c# winforms progress-bar

我正在制作winforms的音乐播放器。我有一个进度条,当我点击进度条上的位置时,我想获得该位置的int(从1到100,即当我想要到达我歌曲中的某个点时)。我怎么能这样做?

此致 Alexandru Badescu

5 个答案:

答案 0 :(得分:2)

使用TrackBar控件,而this可能是一个先进的控件,我希望它可以帮到你。

祝你好运。

答案 1 :(得分:2)

试试这个:

'Using The Click or MouseDown or any Mouse Event

Dim Value As Integer= Me.PointToClient(MousePosition).X-Progressbar.Bounds.X

Progressbar.value= Value

答案 2 :(得分:1)

你可以使用必须放在进度条上的控件 - 就像一个小子弹。 现在,如果你使用代码

progressbar1.value=control.location.x/y

将控件的名称放在控件的位置x / y决定坐标。

请注意您必须在进度条上移动控件以简化使用图片框并使用keydown事件并排移动

答案 3 :(得分:1)

这个会显示与进度条上的点击完成位置相关的值。此处的值范围是从0到100%计算的。它还与进度条的宽度有关,因此范围将保持固定为百分比逻辑。

private void progressBar1_Click(object sender, EventArgs e)
        {
            // Get mouse position(x) minus the width of the progressbar (so beginning of the progressbar is mousepos = 0 //
            float absoluteMouse = (PointToClient(MousePosition).X - progressBar1.Bounds.X);
            // Calculate the factor for converting the position (progbarWidth/100) //
            float calcFactor = progressBar1.Width / (float)progressBar1.Maximum;
            // In the end convert the absolute mouse value to a relative mouse value by dividing the absolute mouse by the calcfactor //
            float relativeMouse = absoluteMouse / calcFactor;

            // Set the calculated relative value to the progressbar //
            progressBar1.Value = Convert.ToInt32(relativeMouse);
        }

我知道很久以前就问过这个问题了,但这不是正确的解决方案。现在就是这样。

答案 4 :(得分:0)

您可以使用图片框来模拟进度条...有一种方法可以根据当前进度部分填充它,并连接MouseDown事件(这将为您提供鼠标位置,然后您可以相应地缩放)。