当我试图从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;
我错过了任何可能导致此问题的原因吗?
答案 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)超出了范围。
有帮助的一些示例 希望它有所帮助,祝你好运。