繁体   English   中英

InvalidArgument='-1' 的值对 'index' 无效。 参数名称:索引

[英]InvalidArgument=Value of '-1' is not valid for 'index'. Parameter name: index

我收到“InvalidArgument=Value of '-1' 对 'index' 无效。参数名称:index”。 我不知道我搞砸了哪一部分。

  private void bankerCard_DrawItem(object sender, DrawItemEventArgs e)
   {
        e.DrawBackground();
        Brush myBrush = Brushes.Black;

        if (bankerCard.Items[e.Index].ToString().Contains("♥"))
            myBrush = Brushes.Red;
        else if (bankerCard.Items[e.Index].ToString().Contains("♦"))
            myBrush = Brushes.Red;
        else
            myBrush = Brushes.Black;

        e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(),
            e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);

        e.DrawFocusRectangle();
    }

以上代码测试,没问题。 问题发生在下面。 任何线索?

   private void playerCard_DrawItem(object sender, DrawItemEventArgs e)
    {
        e.DrawBackground();
        Brush myBrush = Brushes.Black;

        switch (e.Index)
        {
            case 0:
                myBrush = Brushes.Red;
                break;
            case 1:
                myBrush = Brushes.Orange;
                break;
            case 2:
                myBrush = Brushes.Purple;
                break;
        }

        e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(),
            e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);  `error over here`

        e.DrawFocusRectangle();
    }

错误是不言自明的,可能在这里e.Index值为-1并且您正在尝试访问(ListBox)sender).Items[-1]

((ListBox)sender).Items[e.Index].ToString()

要解决此问题,您可以添加一个 if 语句来检查索引是否大于 -1:

if(e.Index >= 0)
{
   e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(),
        e.Font, myBrush, e.Bounds, StringFormat.GenericDefault)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM