2012-09-24 49 views
0

我得到ArgumentOutOfRangeException,當我嘗試從hexavalues獲取顏色時。ArgumentOutOfRangeException在Wp7中獲取GetColorFromHexa時未處理

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; 

我錯過了什麼可能是這個問題的原因?

回答

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

希望它幫助,祝你好運。

2

看起來像你的參數#ADD8E6缺少其中一種顏色成分。 AD D8 E6只有三個組件,而ARGB需要四個。第四名在哪裏? 所以在行Convert.ToByte(hexaColor.Substring(7,2),16)上引發異常。

相關問題