• winfrom动态生成控件


    一、需求描述

    要完成一个winform程序,里面涉及到动态生成控件,初始化时:

    点击添加阶梯价后:(点击一下,动态添加一行)

    二、思路和代码实现

    首先是动态添加控件(需要什么控件,都可以动态添加,思路都一样),这里写了一个专门动态创建控件的函数btn_create_Click,当点击上图的“添加阶梯价”按钮的时候就执行该函数。函数代码如下:

    #region 动态创建价格梯度
            private void btn_create_Click(object sender, EventArgs e)
            {
                try
                {
                    TextBox tb = new TextBox();
                    TextBox tb1 = new TextBox();
                    Label lb = new Label();
                    Label lb1 = new Label();
                    lb1.Text = "价格为:";
                    lb.Text = "当数量为:";
                    //设置控件属性和名称,其中全局变量“j”(初始值为0)是为了给每一个动态产生的控件命名,方便以后处理每个动态产生的控件;
                    j++;
                    tb.Name = "txt_number_" + j;
                    tb1.Name = "txt_discount_" + j;
                    tb.Width = 200;
                    tb1.Width = 200;
                    //设定位置,确定控件显示的位置。
                    tb.Top = 30 + j * 30;
                    tb.Left = 250;
                    tb1.Top = 30 + j * 30;
                    tb1.Left = 650;
                    lb.Top = 35 + j * 30;
                    lb.Left = 150;
                    lb1.Top = 35 + j * 30;
                    lb1.Left = 550;
                    //添加控件 , ProductPrice是一个GroupBox组件,我动态产生的控件都放在了GroupBox中,布局的需要。             
                    this.ProductPrice.Controls.Add(lb);
                    this.ProductPrice.Controls.Add(tb);
                    this.ProductPrice.Controls.Add(lb1);
                    this.ProductPrice.Controls.Add(tb1);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message); 
                }
            }
            #endregion

    接下来就是将动态控件中的数据进行保存,思路很简单

    //声明一个价格梯度的泛型,用来接收阶梯价的数据
    Product product_entity = new Product();
    #region
    将动态控件中相应的数据赋值给对应的对象字段 int control_num = 0; Control ctl_1=new Control(), ctl_2 = new Control() ;//控件对象 List<Entity.VAERP.ProductPrice> prices = new List<Entity.VAERP.ProductPrice>();//声明阶梯价的类实体,用来接收数据 int a = 0;//记录数量控件状态 int b = 0;//记录价格控件状态 /// [扩展属性] 产品价值 foreach (Control ctl in this.ProductPrice.Controls) {
              //判断符合条件且对应的动态控件
    if (ctl.GetType().ToString() == "System.Windows.Forms.TextBox" &&ctl.Name!= "tbox_baseprice") { control_num++; if (control_num % 2 != 0) { ctl_1 = ctl; a = 1; } if (control_num % 2 == 0) { ctl_2 = ctl; b = 1; }
                //当a,b都为1的时候,说明获取到了对应的数量和价格,把对应的这一组数量和价格添加到类实体
    if (a==1&&b==1) { prices.Add(new Entity.VAERP.ProductPrice { ProductID = "", ID = 0, Quantity = int.Parse(ctl_1.Text), Percent = decimal.Parse(ctl_2.Text) / product_entity.BasePrice });
                  //设置为0,寻找下一组对应的数量价格。 a
    = 0; b = 0; } } }
            //获取到了所有组数据,赋值给产品实体 并插入 product_entity.Prices
    = prices.ToArray();
           insert(product_entity);

    #endregion
  • 相关阅读:
    《Google 软件测试之道》摘录
    UIRecorder环境搭建及录制实现
    网易《人性的哲学与科学》笔记
    网易《公正:该如何做是好?》笔记(不定时更新)
    自助饮料机实现
    网易《社会心理学》笔记(不定时更新)
    uiautomator +python 安卓UI自动化尝试
    doc
    doc
    doc
  • 原文地址:https://www.cnblogs.com/qtiger/p/5629078.html
Copyright © 2020-2023  润新知