CheckBox控件和Lable控件怎么关联?小虾山重水复了,大侠们请帮忙啊
CheckBox控件和Lable控件如何关联?小虾山重水复了,大侠们请帮忙啊!
一、题目
建立一个简单的购物计划,物品及物品单价已经列出,用户只需在购买时,选择购买的物品,在TextBox中就显示总价,按退出按钮则退出程序。
物品栏 用CheckBox复选框控件;单价栏 用Lable标签控件;
初始界面,因发不了图片,只好文字描述了。
--------------------------------------------------------
物品 单价
口 洗发水 30
口 牙膏 6.5
口 牙刷 12.5
口 肥皂 2.5
总价 口 退出
-------------------------------------------------------
二、我的努力
1、我用CheckBox复选框的Click属性实现:哪个复选框被选中,通过sender实现传递那个触发的复选框控件;
代码如下:
namespace 作业
{
public partial class Form7 : Form
{
public Form7()
{
InitializeComponent();
}
double sum = 0;
//退出
private void btn_sum_Click(object sender, EventArgs e)
{
this.Close();
}
//通过sender实现谁触发,传递谁?
private void chk_1_Click(object sender, EventArgs e)
{
CheckBox chk = sender as CheckBox;
if (chk.Checked)
{
sum = sum + Convert.ToDouble(lbl_1.Text); //这里如何实现谁触发选择相对应的价格?
this.textBox1.Text = sum.ToString(); // 即:洗发水选中触发,lable就选择洗发水相对应的价格,
}
else
{
sum = sum - Convert.ToDouble(lbl_1.Text); //这里如何实现谁触发选择相对应的价格?
this.textBox1.Text = sum.ToString(); //即:牙膏选中触发,lable就选择牙膏相对应的价格。
}
}
}
}
三、我的求助
我的这个代码,不能把CheckBox控件和Lable控件关联起来。即,我不能实现:选择洗发水,就选择了30元的单价,取消洗发水,就减去了30元的单价;其他几个复选框,也一样。代码中sum求和这句,怎么写能实现题目的要求?
请各位高手大侠帮忙!小虾在此有礼了。谢谢!
------解决思路----------------------
1.复选框有checkedChange事件,可以代码绑定事件(你的复选框保证也是代码生成的)
2.这种问题,用DataGridView做要简单的多
3.控件是控件,数据是数据,你后台要有个结构来存数据,前台控件显示数据.不要一用到数据就从前台控件的属性里取,效率低下,而且耦合度太高
------解决思路----------------------
你也可以使用ListView或CheckedBoxList控件
后台数据可以是1个bool数组和1个float数组,也可以是DataTable,可以是实体类,可以是结构体,可以是二维object数组,可以是字典
总之控件是输入数据和显示数据用的,不是用来存放数据的
任何方式都比你动态放一大堆checkbox和label要好的多
------解决思路----------------------
1.控件要关联,创建个自定义控件,把checkbox和label放进去,这样处理就简单了,不需要
手动去处理联系。
2.sum的算法可以这样
------解决思路----------------------
自己将checkbox和label封装成一个用户控件,或者干脆舍弃这种方式,使用gridview等控件比较方便和直观。
一、题目
建立一个简单的购物计划,物品及物品单价已经列出,用户只需在购买时,选择购买的物品,在TextBox中就显示总价,按退出按钮则退出程序。
物品栏 用CheckBox复选框控件;单价栏 用Lable标签控件;
初始界面,因发不了图片,只好文字描述了。
--------------------------------------------------------
物品 单价
口 洗发水 30
口 牙膏 6.5
口 牙刷 12.5
口 肥皂 2.5
总价 口 退出
-------------------------------------------------------
二、我的努力
1、我用CheckBox复选框的Click属性实现:哪个复选框被选中,通过sender实现传递那个触发的复选框控件;
代码如下:
namespace 作业
{
public partial class Form7 : Form
{
public Form7()
{
InitializeComponent();
}
double sum = 0;
//退出
private void btn_sum_Click(object sender, EventArgs e)
{
this.Close();
}
//通过sender实现谁触发,传递谁?
private void chk_1_Click(object sender, EventArgs e)
{
CheckBox chk = sender as CheckBox;
if (chk.Checked)
{
sum = sum + Convert.ToDouble(lbl_1.Text); //这里如何实现谁触发选择相对应的价格?
this.textBox1.Text = sum.ToString(); // 即:洗发水选中触发,lable就选择洗发水相对应的价格,
}
else
{
sum = sum - Convert.ToDouble(lbl_1.Text); //这里如何实现谁触发选择相对应的价格?
this.textBox1.Text = sum.ToString(); //即:牙膏选中触发,lable就选择牙膏相对应的价格。
}
}
}
}
三、我的求助
我的这个代码,不能把CheckBox控件和Lable控件关联起来。即,我不能实现:选择洗发水,就选择了30元的单价,取消洗发水,就减去了30元的单价;其他几个复选框,也一样。代码中sum求和这句,怎么写能实现题目的要求?
请各位高手大侠帮忙!小虾在此有礼了。谢谢!
------解决思路----------------------
1.复选框有checkedChange事件,可以代码绑定事件(你的复选框保证也是代码生成的)
2.这种问题,用DataGridView做要简单的多
3.控件是控件,数据是数据,你后台要有个结构来存数据,前台控件显示数据.不要一用到数据就从前台控件的属性里取,效率低下,而且耦合度太高
------解决思路----------------------
你也可以使用ListView或CheckedBoxList控件
后台数据可以是1个bool数组和1个float数组,也可以是DataTable,可以是实体类,可以是结构体,可以是二维object数组,可以是字典
总之控件是输入数据和显示数据用的,不是用来存放数据的
任何方式都比你动态放一大堆checkbox和label要好的多
------解决思路----------------------
1.控件要关联,创建个自定义控件,把checkbox和label放进去,这样处理就简单了,不需要
手动去处理联系。
2.sum的算法可以这样
float sum = 0; //全局变量
///checkbox的选择处理
///放到checkBox1_CheckedChanged中
if(checkbox1.checked)
{
sum += Convert.tosingle(labelValue.text);
}
else
sum-= Convert.tosingle(labelValue.text);
------解决思路----------------------
自己将checkbox和label封装成一个用户控件,或者干脆舍弃这种方式,使用gridview等控件比较方便和直观。