在Wp7中获取GetColorFromHexa时未处理ArgumentOutOfRangeException

时间:2012-09-24 10:20:41

标签: windows-phone-7

当我试图从hexavalues中获取颜色时,我收到了ArgumentOutOfRangeException。

   public static SolidColorBrush GetColorFromHexa(string hexaColor)
    {
        return new SolidColorBrush(
            Color.FromArgb(
                Convert.ToByte(hexaColor.Substring(1, 2), 16),
                Convert.ToByte(hexaColor.Substring(3, 2), 16),
                Convert.ToByte(hexaColor.Substring(5, 2), 16),
                Convert.ToByte(hexaColor.Substring(7, 2), 16)
            )
        );
    }


  SolidColorBrush brush = GetColorFromHexa("#ADD8E6");
  border.Background = brush;

我错过了任何可能导致此问题的原因吗?

2 个答案:

答案 0 :(得分:2)

看起来您的参数#ADD8E6缺少其中一个颜色组件。 AD D8 E6只是三个组件,而ARGB需要四个组件。第四个在哪里? 所以异常抛出转换为Convert.ToByte(hexaColor.Substring(7,2),16)。

答案 1 :(得分:1)

ArgumentOutOfRangeException -
startIndex plus length indicates a position not within this instance.

-or-

startIndex or length is less than zero -msdn

所以这就是造成你问题的原因,换句话说,价值(最后一个是7,2)超出了范围。

可能会对MSDN String.Substring Method

有帮助的一些示例 希望它有所帮助,祝你好运。