将多个numericupdown值添加到标签

时间:2018-01-16 11:20:42

标签: c# visual-studio-2017

我目前正在完成大学任务,需要一点帮助才能编写代码。我正在制作关于灰树林案例研究的表格。

我是C#的新手,更喜欢html。

我需要帮助知道如何编写代码,以便我可以更改不同选项的数字更新值,它会增加价格。

我的表单的图像: enter image description here 例如,我想要1只小狗和抗生素的drontal 7天。我怎么得到它所以它会将值添加到标签中并存储它们?

到目前为止我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Task3
{

    public partial class Medication : Form
    {
        public Medication()
        {
            InitializeComponent();
        }

        private void btnExit_Click(object sender, EventArgs e) //Exit button
        {
            Application.Exit();
        }

        private void btnPrevious_Click(object sender, EventArgs e) //Previous button
        {
            Form Start = new ClientData();
            this.Hide();
            Start.Show();
        }

        private void btnNextForm3_Click(object sender, EventArgs e) //Next button
        {
            Form Start = new Procedures();
            this.Hide();
            Start.Show();
        }

        private void UpdownAntibiotic7_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpdownAntibiotic14_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpdownFleeAndMite_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpdownHeartworm_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpdownAnesGasTo30min_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpdownAnesGasAfter30min_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpdownFentanyl_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpdownFrontline_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpDownAnalgesia_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpDownBaytrill_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpDownMetronidazole_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpDownRimadyl_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpDownDrontalSmall_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpDownDrontalLarge_ValueChanged(object sender, EventArgs e)
        {

        }

        private void UpDownCanineRabies_ValueChanged(object sender, EventArgs e)
        {

        }
    }
}

我正在使用Visual Studio 2017

更新版本的代码。不知道我做错了什么。

private decimal Calculate(int count, string nudName)
        {
            decimal price;
            decimal result = 0;

            switch (nudName)
            {
                case "UpdownAntibiotic7":
                    price = 19.60m;
                    result = price * count;
                    break;

                case 
                    // ...add more cases for different medicines

                default:
                    break;
            }

            return result;
        }

        private void UpdownAntibiotic7_ValueChanged(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(price.Text))
                price.Text = (Calculate(Convert.ToInt32(UpdownAntibiotic7.Value), UpdownAntibiotic7.Name)).ToString();
            else
               price.Text = (decimal.Parse(price.Text.Replace(' ', '0').Replace('£', '0')) + Calculate(Convert.ToInt32(UpdownAntibiotic7.Value), UpdownAntibiotic7.Name)).ToString("C");
        }

1 个答案:

答案 0 :(得分:1)

首先,我们会为每个int声明一个NumericUpAndDown变量,以存储SelectedValue NumericUpAndDowns,以便我们知道如果我们要么增加或减去货币价值。

int nudAntibioticOldValue; // should be declared above the constructor

此外,您必须订阅ValueChanged的{​​{1}}事件,以便在用户更改其值后收到通知。如果您要设置标签numericUpDowns的文字。首先,您获取标签中的现有文本并将其解析为laTotalPrice,以便您可以使用现有值进行计算。

decimal

之后,您将为其添加新值,该值将在private void nudAntibiotic_ValueChanged(object sender, EventArgs e) { if (String.IsNullOrEmpty(laTotalPrice.Text)) laTotalPrice.Text = (Calculate(Convert.ToInt32(nudAntibiotic.Value), nudAntibiotic.Name)).ToString(); else laTotalPrice.Text = (decimal.Parse(laTotalPrice.Text.Replace(' ', '0').Replace('€','0')) + Calculate(Convert.ToInt32(nudAntibiotic.Value), nudAntibiotic.Name)).ToString("C"); nudAntibioticOldValue = Convert.ToInt32(nudAntibiotic.Value); } 中计算。作为方法参数,您可以输入Calculate()的{​​{1}}和Value的{​​{1}},因此您可以使用numericUpDown语句的名称。您可以区分不同的药物,每种药物的价格不同。

Name

我更新了使用numericUpDown代替switch case的答案,因为private decimal Calculate(int count, string nudName) { decimal price; decimal result = 0; switch (nudName) { case "nudAntibiotic": count -= nudAntibioticOldValue; price = 19.60m; result = price * count; break; //...add other cases for different medicine default: break; } return result; } 发明的唯一目的是将其用于例如decimal。完全场景。

  

decimal关键字表示128位数据类型。与浮点类型相比,十进制类型具有更高的精度和更小的范围,这使其适用于财务和货币计算。

根据MSDN Doc