You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 12:43:12