两个ComboBox的取值问题 注册事件的时机

在WinForm中添加两个ComboBox和一个TextBox,实现一个简单的收费问题:根据购买物品的数量和该种物品的折扣算钱。

关键代码如下:
intprice=2000;

private void Form1_Load(object sender, System.EventArgs e)
{
this.cboNum.Items.Add("1");
this.cboNum.Items.Add("2");
this.cboNum.Items.Add("3");
this.cboNum.Items.Add("4");
this.cboNum.Items.Add("5");
this.cboNum.SelectedIndex=0;

this.cboDiscount.Items.Add("95%");
this.cboDiscount.Items.Add("90%");
this.cboDiscount.Items.Add("85%");
this.cboDiscount.Items.Add("80%");

this.cboDiscount.SelectedIndex=0;


}

private void cboNum_SelectedIndexChanged(object sender, System.EventArgs e)
{
double sum=Convert.ToDouble(this.cboNum.Text.ToString())*Convert.ToDouble(this.cboDiscount.Text.ToString().Substring(0,2))*price;
this.txtMoney.Text=sum.ToString();
}

private void cboDiscount_SelectedIndexChanged(object sender, System.EventArgs e)
{
double sum=Convert.ToDouble(this.cboNum.Text.ToString())*Convert.ToDouble(this.cboDiscount.Text.ToString().Substring(0,2))*price;
this.txtMoney.Text=sum.ToString();
}
怎么总是报错啊
我想因该是执行到this.cboNum.SelectedIndex=0;是就跳到cboNum_SelectedIndexChanged()方法吧,从而导致cboDiscount取不到值
但不知道怎么解决啊
求人啊
 
 回复人:xiongpeiyuan() ( 一级(初级)) 信誉:1002007-7-9 23:10:25得分:0
 
 
?

怎么没人啊



Top
 
 回复人:lovesnow1573(天山寒雪) ( 二级(初级)) 信誉:1002007-7-10 8:23:19得分:0
 
 
?

楼主 其实已经 猜对了:

执行到 this.cboNum.SelectedIndex=0;
这一步的时候,就会 触发事件
private void cboNum_SelectedIndexChanged(object sender, System.EventArgs e)
{
double sum=Convert.ToDouble(this.cboNum.Text.ToString())*Convert.ToDouble(this.cboDiscount.Text.ToString().Substring(0,2))*price;
this.txtMoney.Text=sum.ToString();
}

但此时的 this.cboDiscount.Text.ToString 还没有值,,所以转换的 时候就报错了..
Top
 
 回复人:lovesnow1573(天山寒雪) ( 二级(初级)) 信誉:1002007-7-10 8:25:29得分:0
 
 
?

你 可以在这个事件
private void cboNum_SelectedIndexChanged(object sender, System.EventArgs e)
{
MessageBox.Show(cboDiscount.Text.Tostring());// 就知道 是空的..
}
Top
 
 回复人:hbxtlhx(平民百姓-自已动手,丰衣足食) ( 四星(高级)) 信誉:1122007-7-10 8:31:10得分:0
 
 
?

首先从InitializeComponent函数中除去类似如下这些语句:

this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);


你把注册ComboBox的SelectedIndexChanged事件写到Load事件里的所有代码的下面.比如:

private void Form1_Load(object sender, System.EventArgs e)
{
this.cboNum.Items.Add("1");
this.cboNum.Items.Add("2");
this.cboNum.Items.Add("3");
this.cboNum.Items.Add("4");
this.cboNum.Items.Add("5");
this.cboNum.SelectedIndex=0;

this.cboDiscount.Items.Add("95%");
this.cboDiscount.Items.Add("90%");
this.cboDiscount.Items.Add("85%");
this.cboDiscount.Items.Add("80%");

this.cboDiscount.SelectedIndex=0;

this.cboNum.SelectedIndexChanged += new System.EventHandler(this.cboNum_SelectedIndexChanged);

this.cboDiscount.SelectedIndexChanged += new System.EventHandler(this.cboDiscount_SelectedIndexChanged);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值