我是C#的新手,我正在上课,我正在努力。
分配是使用文本框值(valuetextbox)创建转换应用程序,并有2个列表框,其中包含英寸,英尺和码的测量值。目标是根据在第一个列表框中选择的度量单位(selectedinitialunit)转换值,并根据在第二个列表框中选择的度量单位(selectedconvertedunit)在标签中发布值。根据输入到valuetextbox中的值,我错过了如何在我的selectedinitialunit和我的selectedconvertedunit之间进行比较(数学)。
namespace Measurement_Conversion
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void convertedValueLabel_Click(object sender, EventArgs e)
{
}
private void exitButton_Click(object sender, EventArgs e)
{
Close();
}
private void resetButton_Click(object sender, EventArgs e)
{
valueTextBox.Text = "";
convertedValueLabel.Text = "";
DesiredUnitBox.SelectedIndex = -1;
InitialUnitBox.SelectedIndex = -1;
valueTextBox.Focus();
}
private void convertButton_Click(object sender, EventArgs e)
{
//Declare Variables
decimal initialvalue;
decimal convertedvalue;
string selectedInitialUnit;
string selectedConvertedUnit;
//Grab Initial Value
initialvalue = int.Parse(valueTextBox.Text);
//Determining Initial Unit has been selected.
if (InitialUnitBox.SelectedIndex != -1)
{
selectedInitialUnit = InitialUnitBox.SelectedItem.ToString();
}
else { MessageBox.Show("Please select an Initial Unit of measurement."); }
//Determining Desired Conversion Unit has been selected
if (DesiredUnitBox.SelectedIndex != -1)
{
selectedConvertedUnit = DesiredUnitBox.SelectedItem.ToString();
}
else { MessageBox.Show("Please select a desired conversion unit of measurement."); }
//Switch Statement
switch (selectedInitialUnit)
{
case "Inches":
convertedValueLabel.Text = ()
break;
case "Feet":
break;
case "Yards":
break;
}
}
}
}
我在纸上写的内容是这样的 - 这不是代码,只是我的思考过程:
if selectedinitialunit = INCHES and selectedconvertedunit = INCHES
then messagebox.show("Please select a different selectedconvertedunit");
else selectedinitialunit = INCHES and selectedconvertedunit = FEET
then convertedvaluelabel.Text = initialvalue/12;
else selectedinitialunit = INCHES and selectedconvertedunit = YARDS
then convertedvaluelabel.Text = initialvalue/36;
等其他选定的初始单位。
我非常感谢你的帮助,我希望我不会到处都是。
提前谢谢!
答案 0 :(得分:0)
您可以使用:
//Switch Statement
switch (selectedInitialUnit + "->" + selectedconvertedunit)
{
case "Inches->Feet":
convertedValueLabel.Text = ()
break;
case "Feet->Inches":
break;
case "Yards->Feet":
break;
case "Yards->Yards":
case "Feet->Feet":
Messagebox.Show("Please select a different selectedconvertedunit");
break;
}
另一种方法是直接使用SelectedIndex
。
请在此处发帖,我建议不要使用以下代码。
如果InitialUnitBox
和DesiredUnitBox
有数字项< 10你可以使用:
switch (InitialUnitBox.SelectedIndex * 10 + DesiredUnitBox.SelectedIndex)
{
case 0: // = 0 * 10 + 0: first item of both box
case 11: // Same index both box
case 22: // Same index both box
Messagebox.Show("Please select a different selectedconvertedunit");
break;
case 10: // = 1 * 10 + 0: second item of InitialUnitBox and first item of DesiredUnitBox
break;
case 11: // = 1 * 10 + 1
break;
}
答案 1 :(得分:0)
最简单的方法是选择一个" base"测量并转换为该测量值,然后再从该测量值转换。
它甚至可以是米或毫米。这样你只需要2(如果选择英寸)或3个乘数就可以直接使用它。
Boolean
您也可以使用矩阵
const double InchesInFoot = 12;
const double InchesInYard = InchesInFoot * 3;
// step 1
double valueInches = input * constant above according to input measurement;
// step 2
double result = valueInches / constant according to output measurement;
这将使其更容易阅读,但您需要提前做更多的数学运算。
我想这需要你理解多维数组和事物,以及比需要更多的数学。
答案 2 :(得分:0)
你可以写这样的代码 -
string selectedUnit = selectedinitialunit.SelectedItem.ToString();
string convertedUnit = selectedconvertedunit.SelectedItem.ToString();
double valueToConvert = double.Parse(initialvalue.Text);
if (selectedUnit.Equals(convertedUnit))
{
MessageBox.Show("Please select a different selectedconvertedunit");
}
else
{
switch (selectedUnit)
{
case "INCHES":
switch (convertedUnit)
{
case "FEET":
convertedvaluelabel.Text = (valueToConvert / 12.0).ToString();
break;
case "YARDS":
convertedvaluelabel.Text = (valueToConvert / 36.0).ToString();
break;
}
break;
}
}
您始终可以在代码中添加某种异常以及错误处理和验证。