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 ...
随机推荐
- VMware虚拟机的CentOS无法上网的解决方法
前言:由于Linux下很多软件安装必须网络环境下进行,因此,对于如何在VMware下进行上网,我折腾了至少三天,今天上午,也即五一劳动节,终于搜到一遍技术文章,经过自己实践,VMware下Linux的 ...
- 建立dblink
源地址:http://blog.itpub.net/24104981/viewspace-1116085/ create database link dblinkname connect to use ...
- java小程序
1.水仙花数 这个数等于它的每位数的立方和 (三位数) 示例一: int i; int j; int k; for (i=1;i<=9;i++) { for (j=0;j<=9;j++){ ...
- ArcGIS Engine 下投影坐标和经纬度坐标的相互转换
ArcGIS Engine 下投影坐标和经纬度坐标的相互转换 投影转经纬度 ); pPoint.Project(pSRF.CreateGeographicCoordinateSystem((int)e ...
- [SQL]SQL中把一个字段的数据分多行显示
其实你完全可以写个自定义函数就OK了 . =================================================================== create func ...
- (easy)LeetCode 237.Delete Node in a Linked List
Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...
- 翻译:深入 AngularUI Router
原文地址:http://www.ng-newsletter.com/posts/angular-ui-router.html ui-router: https://angular-ui.github. ...
- POJ1002_487-3279_C++
题目:http://poj.org/problem?id=1002 我知道你们最需要的是这个 [ 手动滑稽 ] STD 给出的方法是丢进一个数组,然后排序,相邻的是重复的 这个方法,时间复杂度很不错, ...
- jmeter随笔(5)--断言中正则表达式的特殊字符问题和中文乱码显示问号的问题
最近在工作中,对jmeter实践的点滴的记录,这里分享交流,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 问题:今天QQ群一朋友遇到jmeter的 ...
- 在Ubuntu Server14.04上编译Android6.0源码
此前编译过Android4.4的源码,但是现在Android都到了7.0的版本,不禁让我感叹Google的步伐真心难跟上,趁这周周末时间比较充裕,于是在过去的24小时里,毅然花了9个小时编译了一把An ...