InvalidArgument=';的值;2';对于';索引';.尝试单独键入字符时

本文关键字:单独键 字符 对于 的值 InvalidArgument 索引 | 更新日期: 2023-09-27 18:20:21

我正在尝试键入一个每个字符之间都有小空格的字符串。

然后我用这个我得到一个错误:InvalidArgument=Value of '2' is not valid for 'index'.行:if (currentChar == lbMessage.Items[tickCount].ToString().Length)我对文本框做了类似的处理,但我不能对ListBox做。

private void Space(object sender, EventArgs e)
{
    if (tickCount < lbMessage.Items.Count)
    {
        SendKeys.Send(lbMessage.Items[tickCount].ToString().Substring(currentChar++, 0));
        tickCount++;
        if (currentChar == lbMessage.Items[tickCount].ToString().Length)
        {
            tmrSpace.Enabled = false;
            SendKeys.Send("{enter}");
        }
        if (tickCount >= lbMessage.Items.Count) tickCount = 0;
    }
    tmrSpace.Interval = random.Next(50, 100);
}

这适用于文本框字段:

private void Space(object sender, EventArgs e)
{
    SendKeys.Send(txtText.Text.Substring(b++, 1));
    tmrSpace.Interval = random.Next(50, 150);
    if (b == txtText.TextLength)
    {
        tmrSpace.Enabled = false;
        SendKeys.Send("{enter}");
    }
}

InvalidArgument=';的值;2';对于';索引';.尝试单独键入字符时

看看这个:

if (tickCount < lbMessage.Items.Count)
{
    SendKeys.Send(lbMessage.Items[tickCount] // etc, irrelevant
    tickCount++;
    if (currentChar == lbMessage.Items[tickCount].ToString().Length)

现在假设tickCount正是lbMessage.Items.Count - 1第一次对其进行索引时,这很好,但随后递增tickCount并再次索引,此时tickCount将等于lbMessage.Items.Count,您将得到该异常。

我不太清楚你的代码(我很累),但你可能想把tickCount的增量移到代码的后面。。。