前些天要完成一个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 = ;
tb1.Width = ;
//设定位置,确定控件显示的位置。
tb.Top = + j * ;
tb.Left = ;
tb1.Top = + j * ;
tb1.Left = ;
lb.Top = + j * ;
lb.Left = ;
lb1.Top = + j * ;
lb1.Left = ;
//添加控件 , 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 = ;
Control ctl_1=new Control(), ctl_2 = new Control() ;//控件对象
List<Entity.VAERP.ProductPrice> prices = new List<Entity.VAERP.ProductPrice>();//声明阶梯价的类实体,用来接收数据
int a = ;//记录数量控件状态
int b = ;//记录价格控件状态
/// [扩展属性] 产品价值
foreach (Control ctl in this.ProductPrice.Controls)
{
          //判断符合条件且对应的动态控件
if (ctl.GetType().ToString() == "System.Windows.Forms.TextBox" &&ctl.Name!= "tbox_baseprice")
{
control_num++;
if (control_num % != )
{
ctl_1 = ctl;
a = ;
}
if (control_num % == )
{
ctl_2 = ctl;
b = ;
}
            //当a,b都为1的时候,说明获取到了对应的数量和价格,把对应的这一组数量和价格添加到类实体
if (a==&&b==)
{
prices.Add(new Entity.VAERP.ProductPrice
{
ProductID = "",
ID = ,
Quantity = int.Parse(ctl_1.Text),
Percent = decimal.Parse(ctl_2.Text) / product_entity.BasePrice
});
              //设置为0,寻找下一组对应的数量价格。
a = ;
b = ;
}
}
}
        //获取到了所有组数据,赋值给产品实体 并插入
product_entity.Prices = prices.ToArray();
       insert(product_entity); #endregion

winfrom之动态控件生成以及保存动态空间的数据的更多相关文章

  1. c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”

    ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述     相关代码 using System; us ...

  2. c++调用matlab生成的Dll动态连接库

    点击打开链接http://download.csdn.net/detail/nuptboyzhb/4228429 c++调用matlab生成的Dll动态连接库 实验平台:   matlab 7.0(R ...

  3. C#动态生成Word文档并填充数据

    C#也能动态生成Word文档并填充数据 http://www.cnblogs.com/qyfan82/archive/2007/09/14/893293.html 引用http://blog.csdn ...

  4. c++ Message与Folder 拷贝 析构(没有动态空间的类)

    c++ Message与Folder 拷贝 析构(没有动态空间的类) 1.两个类里边分别保存一个对方的set表,当前类有拷贝或者销毁时需要更新另一个类的set表. 2.两个类都需要访问对方的priva ...

  5. asp.net.web如何简单生成和保存二维码图片的例子

    首先,要有生成二维码图片,需要二维码生成的类库,到官网下载thoughtWorks.QRCode.dll 例子的步骤: 1.创建项目QRCodeTest1,选择asp.net.web窗体应用程序

  6. Winform窗体实现简单的二维码生成和保存

    二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll 步骤: 第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll 第二步:新建winform项目 ...

  7. ArcGIS发布动态空间,并验证

    发布 发布方法见视频. 验证 发布动态空间后,页面底部有 点进去后,使用如下语法验证. {"id": 0,"source": {"type" ...

  8. php CI如何实现全站静态生成html,动态创建目录

    php CI如何实现全站静态生成html,动态创建目录CodeIgniter框架生成HTML的方法 public function out_html($code) { $data['articles' ...

  9. vue根据后端菜单自动生成路由(动态路由)

    vue根据后端菜单自动生成路由(动态路由) router.js import Vue from 'vue' import Router from 'vue-router' import store f ...

随机推荐

  1. sublime 安装常用插件

    1.先要安装Package Control ,ctr+` 打开控制台,复制安装脚本,脚本在https://packagecontrol.io/installation#st3获取. 2.安装插件,ct ...

  2. struts (一)

    1.jar 2.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app id=&quo ...

  3. 解决Web部署 svg/woff/woff2字体 404错误(转)

    http://blog.sina.com.cn/s/blog_4997f1b90102vkjn.html 最近项目中用到了fontawesome-webfont.svg等字体.部署项目后,发现没有&l ...

  4. esriSRProjCS4Type Constants

    ArcGIS Developer Help  (Geometry)   esriSRProjCS4Type Constants See Also esriSRProjCSType Constants ...

  5. [SQL]分布师查询

    EXEC sp_addlinkedserver @server='serverA', @srvproduct='', @provider='SQLOLEDB', @datasrc='192.168.0 ...

  6. poj 3295 Tautology

    点击打开链接 Tautology Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8127   Accepted: 3115 ...

  7. java 的Swing

    1.原来的AWT组件来自java.awt包,而AWT组件的java应用程序在不同平台的界面显示不同.但是在不同平台运用Swing开发的应用程序,就可以使用同一的GUI界面. 2.SWing组件通常被称 ...

  8. 关于WebView的内存泄露问题

    在一个Activity中包含着一个WebView,通过WebView不停的访问Web页面,会发现内存会一直增长,退出此Activity,甚至杀死此Activity,内存依然没有被释放.这就导致,即使是 ...

  9. FileSystem实例化过程

    HDFS案例代码 Configuration configuration = new Configuration(); FileSystem fileSystem = FileSystem.get(n ...

  10. The Ninth Hunan Collegiate Programming Contest (2013) Problem C

    Problem C Character Recognition? Write a program that recognizes characters. Don't worry, because yo ...