C#从ListBox提取指定内容并执行乘法运算的技术问题
解决ListBox订购项转移与数值运算问题
我来帮你搞定这两个需求,咱们一步步优化你的按钮点击事件代码,完全不用硬编码,还能顺利完成数值运算:
核心逻辑梳理
先把要做的步骤理清楚:
- 先确认用户已经在
listboxitem里选中了商品项,不然操作没意义 - 从选中项里拆分出商品名称和单价(默认你的ListBox项格式是「名称 单价」,比如
Burger 100) - 从TextBox里获取合法的订购数量(得是正整数,避免无效输入)
- 计算总价:数量 × 单价
- 把格式为「名称#数量#总价」的字符串添加到
listboxorder里
完整代码实现
直接替换你现有的btnorder_Click方法即可:
private void btnorder_Click(object sender, EventArgs e) { // 检查是否选中了商品 if (listboxitem.SelectedItem == null) { MessageBox.Show("请先选择要订购的商品哦!"); return; } // 拆分选中项的名称和单价 string selectedItem = listboxitem.SelectedItem.ToString(); string[] itemDetails = selectedItem.Split(' '); // 验证拆分后的格式是否正确(必须是名称+单价两部分) if (itemDetails.Length != 2) { MessageBox.Show("ListBox里的商品格式不对,请确认是「名称 单价」的形式!"); return; } string productName = itemDetails[0]; // 把单价转成decimal(处理金额更准确,整数单价也兼容) if (!decimal.TryParse(itemDetails[1], out decimal unitPrice)) { MessageBox.Show("商品单价不是有效的数字!"); return; } // 获取并验证TextBox里的数量 if (!int.TryParse(textBoxQuantity.Text.Trim(), out int quantity) || quantity <= 0) { MessageBox.Show("请输入有效的正整数数量!"); return; } // 计算总价 decimal totalPrice = quantity * unitPrice; // 构造指定格式的字符串并添加到Order ListBox string orderItem = $"{productName}#{quantity}#{totalPrice}"; listboxorder.Items.Add(orderItem); }
关键细节说明
- 用
Split(' ')拆分选中项:完全依赖ListBox里的现有内容,没有硬编码任何商品名或价格 - 用
TryParse做类型转换:避免因为输入非法值导致程序崩溃,还能给用户友好的错误提示 - 用
decimal处理金额:比int更适合货币场景,就算以后遇到带小数的价格也能直接复用代码 - 字符串插值
$"":让拼接格式字符串的代码更清晰易读,维护起来更方便
内容的提问来源于stack exchange,提问作者ashiq pervez
相关产品推荐
相关产品推荐

