none
SL将颜色名称转换为颜色值的简单方法(以前提过无人给出好答案,现用反射快速解决)。 RRS feed

  • 问题

  •         /// <summary>
            /// 根据颜色名称字符串得到颜色值
            /// </summary>
            /// <param name="ColorNameStr">
            /// 颜色名称字符串,可以是标准的或Window系统已定义的颜色字符串名称。
            /// 如: White,Black ..., ActiveCaptionColor, ActiveBorderColor 等
            /// </param>
            /// <returns></returns>
            public static Color FromNameColor(string ColorName)
            {
                ColorName = (ColorName + "").ToUpper();
                var Lnq1 = from X in (typeof(Colors)).GetProperties()
                           let ClrN = X.Name.ToUpper()
                           let ClrV = (Color)X.GetValue(X, null)
                           where (ClrN == ColorName)
                           select ClrV;
                var Lnq2 = from X in (typeof(SystemColors)).GetProperties()
                           let ClrN = X.Name.ToUpper()
                           let ClrV = (Color)X.GetValue(X, null)
                           where (ClrN == ColorName)
                           select ClrV;
                var Lnq = Lnq1.Concat(Lnq2);
                return Lnq.Count() <= 0 ? Colors.White : (Color)Lnq.First();
            }
    • 已编辑 TFSoft 2010年9月8日 14:59
    2010年9月3日 17:39

答案