好的,这是我的问题。当我选中复选框cbPause
(cbPause = true
)后,我的点数就会开始1
而不是0
。该计数器名为tickCount,如果我将tickCount
放在if (cbPause.Checked == true)
内。如果我把它放在我的Interval方法的末尾它也从1开始而不是0.我应该在哪里放置递增变量,在我的情况下,所以它从0开始?我必须在某处tickCount++;
,但我不知道在哪里。
PS。 tickCount用于查看我必须键入的行。它从0开始,所以我从ListBox中键入第0行。
这是每个键入的消息之间的主计时器计时时间:
private void Interval(object sender, EventArgs e)
{
if (cbPause.Checked == true)
{
randomLine = random.Next(lbMessage.Items.Count);
tmrSpace.Enabled = true;
}
else
{
if (cbRandomLine.Checked == true)
{
SendKeys.Send(lbMessage.Items[random.Next(lbMessage.Items.Count)].ToString() + "{enter}");
}
else
{
if (tickCount < lbMessage.Items.Count)
{
SendKeys.Send(lbMessage.Items[tickCount].ToString() + "{enter}");
if (tickCount == lbMessage.Items.Count) tickCount = 0;
tickCount++;
}
}
}
SetInterval();
}
这个方法是第二个计时器,允许我输入类似打字机的类型,每个字符之间的时间间隔很小。
private void Space(object sender, EventArgs e)
{
if (cbRandomLine.Checked == true)
{
SendKeys.Send(lbMessage.Items[randomLine].ToString().Substring(currentChar++, 1));
if (currentChar == lbMessage.Items[randomLine].ToString().Length)
{
SendKeys.Send("{enter}");
tmrSpace.Enabled = false;
currentChar = 0;
}
}
else
{
if (tickCount < lbMessage.Items.Count)
{
SendKeys.Send(lbMessage.Items[tickCount].ToString().Substring(currentChar++, 1));
if (currentChar == lbMessage.Items[tickCount].ToString().Length)
{
SendKeys.Send("{enter}");
tmrSpace.Enabled = false;
currentChar = 0;
}
}
}
tmrSpace.Interval = random.Next(50, 100);
}
任何提示都非常感谢。提前谢谢。
答案 0 :(得分:1)
你试过这个吗?
if (tickCount == lbMessage.Items.Count)
tickCount = cbPause.Checked ? 1 : 0;
else
tickCount++;
无论如何,在您的代码中,当您点击该部分时,cbPause.Checked始终为false,因此它可能只是:
if (tickCount == lbMessage.Items.Count)
tickCount = 0;
else
tickCount++;
你也可以像这样重写空间方法:
private void Space(object sender, EventArgs e)
{
if (cbRandomLine.Checked || tickCount < lbMessage.Items.Count)
{
var index = cbRandomLine.Checked ? randomLine : tickCount;
var item = lbMessage.Items[index ].ToString();
SendKeys.Send(item.Substring(currentChar++, 1));
if (currentChar == item.Length)
{
SendKeys.Send("{enter}");
tmrSpace.Enabled = false;
currentChar = 0;
}
}
tmrSpace.Interval = random.Next(50, 100);
}
答案 1 :(得分:1)
我就是这样做的。刚加了一个布尔检查:
private void Interval(object sender, EventArgs e)
{
if (cbPause.Checked)
{
randomLine = random.Next(lbMessage.Items.Count);
tmrSpace.Enabled = true;
if (whenStart)
tickCount++;
else whenStart = true;
}
else
{
if (cbRandomLine.Checked)
{
SendKeys.Send(lbMessage.Items[random.Next(lbMessage.Items.Count)].ToString() + "{enter}");
}
else
{
if (tickCount < lbMessage.Items.Count)
{
SendKeys.Send(lbMessage.Items[tickCount].ToString() + "{enter}");
tickCount++;
}
}
}
if (tickCount == lbMessage.Items.Count) tickCount = 0;
SetInterval();
}