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 ...
随机推荐
- Performance plugin离线安装
Upload安装plugin Upload安装plugin方式,需要手动下载plugin,然后在Jenkins界面中upload plugin,从而实现安装plugin的目的. 进入Jenkins界面 ...
- Java List循环(转)
List有三种循环方式: 分别是经典的for循环,迭代器(list.iterator()),foreache循环(和C#相同哦) 测试代码如下: public static void main(Str ...
- Android SDK Manager 设置代理
直接启用 Android SDK Manager 的命令如下: 在SDK 的 tools 目录下执行: ./android sdk 就会进入 Android SDK Manager 设置代理 在 ...
- poj 1016 Numbers That Count
点击打开链接 Numbers That Count Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 17922 Accep ...
- 共享池之六:shared pool latch/ library cache latch /lock pin 简介
latch:library cache --desc v$librarycache; latch:library cache用于保护hash bucket.library cache lock保护HA ...
- python 2.7.10 找不到 libmysqlclient.18.dylib 解决方案
Mac os x 升级到最新版后出现 python MysqlDB 无法找到 libmysqlclient.18.dylib 的问题,尝试的解决方案如下: 1. 升级更新 mysql 到最新版,无效 ...
- LoadRunner界面分析(三)
1.Anaysis基础知识 2.Analysis 报告 3.Analysis分析基础 4.IP欺骗 需要使用ip欺骗的原因:1.当某个IP的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候 ...
- Oozie 中各种类型的作业执行结果记录
一,提交的作业被SUSPEND,然后再被KILL,记录如下: TYPE1: appType WORKFLOW_JOB id 0000002-160516095026479-oozie-oozi-W e ...
- oracle删除用户及其名下对象
drop user XXXX cascade; drop tablespace XXXX INCLUDING CONTENTS;
- php 调用.net的webservice 需要注意的
首先 SoapClient类这个类用来使用Web services.SoapClient类可以作为给定Web services的客户端.它有两种操作形式:* WSDL 模式* Non-WSDL 模式在 ...