我目前正在完成大学任务,需要一点帮助才能编写代码。我正在制作关于灰树林案例研究的表格。
我是C#的新手,更喜欢html。
我需要帮助知道如何编写代码,以便我可以更改不同选项的数字更新值,它会增加价格。
我的表单的图像: 例如,我想要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");
}
答案 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。