uint color; 
bool parsedhex = uint.TryParse(TextBox1.Text, out color); 
//where Text is of the form 0xFF0000
if(parsedhex)
   //...
不起作用.我究竟做错了什么?
Nes*_*cio 112
尝试
Convert.ToUInt32(hex, 16)  //Using ToUInt32 not ToUInt64, as per OP comment
Jer*_*ebe 45
您可以使用重载TryParse(),它将NumberStyle参数添加到TryParse调用中,该调用提供十六进制值的解析.使用NumberStyles.HexNumber它允许您将字符串作为十六进制数传递.  
注:该问题NumberStyles.HexNumber是,它不支持带有前缀解析值(即0x,&H或者#,所以你必须试图解析值之前剥离其关闭).
基本上你这样做:
uint color;
var hex = TextBox1.Text;
if (hex.StartsWith("0x", StringComparison.CurrentCultureIgnoreCase) ||
    hex.StartsWith("&H", StringComparison.CurrentCultureIgnoreCase)) 
{
    hex = hex.Substring(2);
}
bool parsedSuccessfully = uint.TryParse(hex, 
        NumberStyles.HexNumber, 
        CultureInfo.CurrentCulture, 
        out color);
有关如何使用NumberStyles枚举的示例,请参阅此文章:http://msdn.microsoft.com/en-us/library/zf50za27.aspx
Cor*_*oss 13
或者喜欢
string hexNum = "0xFFFF";
string hexNumWithoutPrefix = hexNum.Substring(2);
uint i;
bool success = uint.TryParse(hexNumWithoutPrefix, System.Globalization.NumberStyles.HexNumber, null, out i);
这是一个 try-parse 风格的函数:
    private static bool TryParseHex(string hex, out UInt32 result)
    {
        result = 0;
        if (hex == null)
        {
            return false;
        }
        try
        {
            result = Convert.ToUInt32(hex, 16);
            return true;
        }
        catch (Exception exception)
        {
            return false;
        }
    }
| 归档时间: | 
 | 
| 查看次数: | 83984 次 | 
| 最近记录: |