当前位置: 首页  >  C#  >  C# .NET反射System.Drawing.Color结构体

C# .NET反射System.Drawing.Color结构体 TOP

请看代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;   //Color结构体所在位置

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Reflection;    //反射必须引用此命名空间


namespace ReflectColorStructDemo

{

    public partial class MainForm : Form

    {

        //窗体初始化

        public MainForm()

        {

            InitializeComponent();


            this.Location = new Point(0, 0);    //窗体左上角得屏幕坐标

            this.Size = SystemInformation.WorkingArea.Size; //窗体尺寸,需要修改窗体的StartPosition属性为Manual,即:手动


            //窗体第一次加载事件处理方法:Lambda语法

            this.Load += (object sender, EventArgs e) =>

            {

                Type type = typeof(Color);

                PropertyInfo[] propertyInfo = type.GetProperties(BindingFlags.Public | BindingFlags.Static);    //获取Color类型的所有公有且是静态的属性


                int x, y, w, h, index;


                x = 2;  //初始x坐标

                y = 2;  //初始y坐标

                w = 87; //加入面板中的Label控件的宽度

                h = 65; //高度


                index = 0;  //计数器,反射得到propertyInfo数组的元素数


                int col = 15;   //列数

                int line = propertyInfo.Length % col > 0 ? propertyInfo.Length / col + 1 : propertyInfo.Length / col;   //行数


                //外层循环控制行

                for (int i = 0; i < line; i++)

                {

                    //内层循环控制列

                    for (int j = 0; j < col && index < propertyInfo.Length; j++)

                    {

                        Label label = new Label();

                        label.Location = new Point(x, y);

                        label.Size = new Size(w, h);


                        label.BackColor = Color.FromName(propertyInfo[index].Name); //设置Label控件背景色


                        label.Text = string.Concat((index + 1).ToString(), ''\n'', propertyInfo[index].Name); //显式文本


                        x += w + 2; //x坐标后移

                        index++;    //计数器自增


                        this.panel1.Controls.Add(label);    //将新标签加入面板,窗体需要添加一个Panel控件且填充窗体

                    }


                    x = 2;  //内层循环完毕后,归位x坐标

                    y += h + 2; //y坐标下移,2表示控件间距

                }

            };

        }

    }

}

贴出执行效果图:

 

 

分类: C#语言
Views:3510   Posted at:2018-01-02
收藏 推荐 打印 | 录入:Admin | 阅读:0