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 = ;
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之动态控件生成以及保存动态空间的数据的更多相关文章
- c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”
ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述 相关代码 using System; us ...
- c++调用matlab生成的Dll动态连接库
点击打开链接http://download.csdn.net/detail/nuptboyzhb/4228429 c++调用matlab生成的Dll动态连接库 实验平台: matlab 7.0(R ...
- C#动态生成Word文档并填充数据
C#也能动态生成Word文档并填充数据 http://www.cnblogs.com/qyfan82/archive/2007/09/14/893293.html 引用http://blog.csdn ...
- c++ Message与Folder 拷贝 析构(没有动态空间的类)
c++ Message与Folder 拷贝 析构(没有动态空间的类) 1.两个类里边分别保存一个对方的set表,当前类有拷贝或者销毁时需要更新另一个类的set表. 2.两个类都需要访问对方的priva ...
- asp.net.web如何简单生成和保存二维码图片的例子
首先,要有生成二维码图片,需要二维码生成的类库,到官网下载thoughtWorks.QRCode.dll 例子的步骤: 1.创建项目QRCodeTest1,选择asp.net.web窗体应用程序
- Winform窗体实现简单的二维码生成和保存
二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll 步骤: 第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll 第二步:新建winform项目 ...
- ArcGIS发布动态空间,并验证
发布 发布方法见视频. 验证 发布动态空间后,页面底部有 点进去后,使用如下语法验证. {"id": 0,"source": {"type" ...
- php CI如何实现全站静态生成html,动态创建目录
php CI如何实现全站静态生成html,动态创建目录CodeIgniter框架生成HTML的方法 public function out_html($code) { $data['articles' ...
- vue根据后端菜单自动生成路由(动态路由)
vue根据后端菜单自动生成路由(动态路由) router.js import Vue from 'vue' import Router from 'vue-router' import store f ...
随机推荐
- oracle查看数据库的字符集
注意如果是从旧的数据库复制,一定要保证字符集使用一模一样的,不然会有很多问题(比如汉字在UTF8占3个字符,在GBK占2个字符,所以设置的列宽度要比原来的大才行,不然就会报值太大的错误) select ...
- Ext TreeGrid提交修改过的数据
本打算将整个treestore的数据提交到服务器,但找来找去没有找到好的方法,在翻api的时候发现了getUpdatedRecords()方法,拿来一试,试出此方法可以拿到被修改过的record so ...
- rman异机恢复(RAC双节点恢复到单节点)
一.数据库全备 RUN {ALLOCATE CHANNEL ch00 DEVICE TYPE disk;ALLOCATE CHANNEL ch01 DEVICE TYPE disk;backup as ...
- font awesome的图标在WP8浏览器下无法显示的问题解决
font awesome无疑是bootstrap上面做的很赞第三方图标 笔者最近做的一个项目,图标在iphone和安卓上面的浏览器上显示都无问题,偏偏WP8上的浏览器显示有问题 通过chrome的开发 ...
- ubuntu14.04配置Hive1.2.1
1.添加环境变量:vi ~/.bashrc #HIVE VARIABLES START export HIVE_HOME=/usr/local/hive-1.2.1 export PATH=$PATH ...
- Webservice测试从头来
一.写WebService 建立java project 建立数据类包 com.parameters.zz 新建Person类 package com.parameters.zz; public cl ...
- A+B问题通解_Pascal_C++_Java
世界不断发展,各种电子设备不断变得更加迷你,代码却越写越长…… A+B Problem Input:Two integer A,B Output:The ans of A+B 1971年,Niklau ...
- FPGA中的时序分析(四)
常用约束语句说明 关于Fmax 上述是实现Fmax的计算公式,clock skew delay的计算如下图, 就是两个时钟的差值.到头来,影响Fmax的值的大小就是组合逻辑,而Fmax是针对 ...
- iOS7 iOS8 UITableviewCell处于编辑状态,dismiss或者back崩溃
今天在项目中遇到一个坑爹的 Crash , 在 iOS7 iOS8 UITableviewCell处于编辑状态,dismiss或者back崩溃 iOS9不会 原因:苹果的BUG代码 解决:在视图消失 ...
- 华为OJ平台——字符串分隔
题目描述: 连续输入字符串,请按长度为8拆分每个字符创 后输出到新的字符串数组: 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理 输入 连续输入字符串(输入两次,每个字符长长度小于100)输 ...