• 控件的动态生成与操作


    事件的三要素:事件源,事件数据,事件处理程序

    例如:

    //sender-事件源,EventArgs-事件数据,函数体就是处理程序
    private void button1_Click(object sender, EventArgs e)
    {
    Button btn = sender as Button; //把事件源具像化。
    MessageBox.Show(btn.Text); //显示事件源的文本。
    }

    案例:动态生成一个按钮布局,并作出一个模拟抽奖的过程

      private void Form4_Load(object sender, EventArgs e)
            {
                BuildLayout();//构建网格布局
                AddButtonToTableLayout(); //向网格布局中加按钮
            }
            private void AddButtonToTableLayout()
            {
                Random rand = new Random();
                for (int i = 0; i < 400; i++)
                {
                    //动态构建按钮
                    Button btn = new Button();
                    //初始化按钮的属性
                    btn.Text = i.ToString();
                    btn.Dock = DockStyle.Fill;
                    tableLayoutPanel1.Controls.Add(btn);
                    if (rand.Next(100) % 3 == 0)
                    {
                        btn.Tag = 1;
                    }
                    else if (rand.Next(100) % 5 == 0)
                    {
                        btn.Tag = 100;
                    }
                    else if (rand.Next(100) % 10 == 0)
                    {
                        btn.Tag = 500;
                    }
                    else
                    {
                        btn.Tag = 0;
                    }
                    //初始化按钮的事件
                    btn.Click += btn_Click;
                }
            }
    
            void btn_Click(object sender, EventArgs e)
            {
                Button btn = sender as Button;
                int n = (int)btn.Tag;
                if (n != 0)
                {
                    btn.BackColor = Color.Red;
                    btn.ForeColor = Color.Yellow;
                    btn.Text = n.ToString();
                    btn.Font = new Font("黑体", 12, FontStyle.Bold);
                }
                btn.Enabled = false;
            }
    
            
            private void BuildLayout()
            {
                //清掉原来的两列
                tableLayoutPanel1.ColumnStyles.Clear();
                //添加20个新列
                tableLayoutPanel1.ColumnCount = 20;
                for (int i = 0; i < 20; i++)
                {
                    ColumnStyle style = new ColumnStyle(SizeType.Percent, 5);
                    tableLayoutPanel1.ColumnStyles.Add(style);
                }
                //添掉原来的两行
                tableLayoutPanel1.RowStyles.Clear();
                //添加20个新行
                tableLayoutPanel1.RowCount = 20;
                for (int i = 0; i < 20; i++)
                {
                    RowStyle style = new RowStyle(SizeType.Percent, 5);
                    tableLayoutPanel1.RowStyles.Add(style);
                }
            }
  • 相关阅读:
    卓京---java基础2
    GuessFist
    猜拳 GuessFist
    GuessNum
    GuessNumber
    JetBrains全系列软件激活教程激活码以及JetBrains系列软件汉化包
    两个class 之间要空两行
    ImageField 字段的使用
    max_length 属性
    null,blank,default
  • 原文地址:https://www.cnblogs.com/William-1234/p/4512358.html
Copyright © 2020-2023  润新知