【发布时间】:2023-04-09 23:06:01
【问题描述】:
我正在尝试以进度条进度的特定增量播放声音。进度条的最大值为 80,由一个间隔为 100 的计时器控制(因此总持续时间为 8 秒)。在第一种情况下,声音会播放,因为 80/16 = 5 这是一个整数,但没有其他播放。如何将进度条值转换为双精度值?或者这甚至是正确的轨道?谢谢!
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (1/16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (2 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (3 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (4 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (5 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (6 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (7 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (8 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (9 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (10 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (11 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (12 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (13 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (14 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (15 / 16)))
hiphopkick.Play();
if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (16 / 16)))
hiphopkick.Play();
【问题讨论】:
-
你需要了解数字。你所有的分数都是0,因为你不了解整数除法。测试浮点数是否相等将是下一个错误原因..
-
标准 C# 陷阱,您使用的是整数除法,因此您将始终得到 0。请改用 1.0 / 16。删除括号也可以。
-
也许这个链接可以帮助你了解它是如何工作的。 stackoverflow.com/a/23822781/4323328
标签: c# progress-bar typeconverter