zoukankan      html  css  js  c++  java
  • 反射学习笔记之遍历System.Drawing.Color结构(转载)

    前台:

    代码
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Reflection_Color.aspx.cs" Inherits="Reflection_Color" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        
    <title></title>
        
    <style type="text/css">
        #pnColors div
        
    {
            float
    :left;
             width
    :140px;
             text-align
    :center;
             margin
    :3px;
             border
    :1px solid #aaa;
             font-size
    :11px;
             font-family
    : Verdana,Arial
            
            
    }
        
    </style>
        
    </head>
    <body>
        
    <h1>Coding4Fun 使用反射遍历System.Drawing.Color结构</h1>
        
    <form id="form1" runat="server">
        
    <asp:RadioButtonList ID="rblSort"  runat="server" AutoPostBack="true"  RepeatDirection="Horizontal" RepeatLayout="Flow">
        
    <asp:ListItem Selected="True">Name</asp:ListItem>
        
    <asp:ListItem>Color</asp:ListItem>
        
    </asp:RadioButtonList>
        
    <asp:Panel ID="pnColors" runat="server"></asp:Panel>
        
    </form>
    </body>
    </html>

    后台:

    代码
    public partial class Reflection_Color : System.Web.UI.Page
    {
        
    protected void Page_Load(object sender, EventArgs e)
        {
            SortBy sort;

            
    if (!IsPostBack)
            {
                sort 
    = SortBy.Name;
            }
            
    else
            {
                sort 
    = (SortBy)Enum.Parse(typeof(SortBy), rblSort.SelectedValue);
            }

            List
    <Div> list = new List<Div>();

            Type t 
    = typeof(System.Drawing.Color);

            System.Reflection.PropertyInfo[] properties 
    = t.GetProperties( System.Reflection.BindingFlags.Static| System.Reflection.BindingFlags.Public);

            Div div;

            
    foreach (System.Reflection.PropertyInfo p in properties)
            {
                System.Drawing.Color c;

                c 
    = (System.Drawing.Color)t.InvokeMember(p.Name, System.Reflection.BindingFlags.GetProperty, nulltypeof(System.Drawing.Color), null);

                div 
    = new Div(c);

                list.Add(div);
            
            }

            list.Sort(Div.GetComparer(sort));
    //排序

            
    foreach (Div item in list)
            {
                pnColors.Controls.Add(item);
            }
        }
    }

    public class Div : System.Web.UI.HtmlControls.HtmlGenericControl
    {
        
    private int colorValue;

        
    private string name;

        
    public Div(System.Drawing.Color color)
            : 
    base("div"//调用基类构造函数,创建一个Div
        {
            
    this.name = color.Name;

            
    this.colorValue = color.R * 256 + color.G * 256 + color.B * 256;

            
    this.InnerHtml =  String.Format("{0}<br/>RGB({1},{2},{3})",name,color.R,color.G,color.B);

            
    int total = color.R + color.G + color.B;

            
    if(total <= 255)
            {
                
    this.Style.Add("color""#eee");
            }

            
    this.Style.Add("background", String.Format("rgb({0},{1},{2})", color.R, color.G, color.B));
        

        }

        
    public static ColorComparer GetComparer(SortBy sort)
        {
            
    return new ColorComparer(sort);
        }

        
    public static ColorComparer GetComparer()
        {
            
    return GetComparer(SortBy.Name);
        }


        
    public class ColorComparer:IComparer<Div>
        {
            
    private SortBy sort;

            
    public ColorComparer(SortBy sort)
            {
                
    this.sort = sort;
            }

            
    //实现IComparer<T>接口,根据Sort判断以何为依据进行排序
            public int Compare(Div x, Div y)
            {
                
    if (sort == SortBy.Name)
                {
                    
    return String.Compare(x.name, y.name);
                }
                
    else
                {
                    
    return x.colorValue.CompareTo(y.colorValue);
                }
            }
        
        }
    }

    public enum SortBy

       Name,Color
    }
  • 相关阅读:
    v4L2编程
    我的c#开发之路
    JS 获取页面input控件 追加样式属性
    FileUpload控件应用
    C# Winform项目下实现左侧菜单右侧界面显示效果
    在DropDownList 控件绑定数据源中新增一条自定义数据
    在datatable数据中自定义增加一列
    java 实现字符串词频统计
    Hibernate3.x 中BLOB、CLOB 注解配置写法
    lucene 排序
  • 原文地址:https://www.cnblogs.com/johnwonder/p/1673034.html
Copyright © 2011-2022 走看看