У меня есть приложение формы windows (в c#) с 2 полями со списком, 1 полем numericUpDown, 1 текстовым полем. пользователь должен выбрать ввод в первом поле со списком, во втором поле со списком, а затем выбрать значение в numericUpDown. Затем моя программа должна отображать результат в текстовом поле.
Я использовал пару операторов if для отображения результата.
я знаю, что c# читает программу сверху вниз и это вызывает у меня проблему.
, когда пользователь выбирает все параметры, моя программа покажет правильный результат, однако, если пользователь вернется и изменит один из своих параметров, результат будет неверным (я думаю, что это не так. 'Неправильно обновить оператор if из-за того, что c# уже прошел эту часть кода?)
Я помещаю каждый оператор if в соответствующие «selectedIndexChanged» и «ValueChanged» (это правильный способ сделать это?)
должен ли я использовать что-то кроме оператора if? или я должен использовать кнопку «вычислить», которую пользователь сначала должен нажать, прежде чем показывать ЛЮБОЙ результат?
могу ли я использовать возврат или что-то в этом роде? Я действительно не понимаю эти
Я пытался установить для других bools значение false, если для другого было установлено значение true, но это ничего не дало.
public bool staal = false; //steel
public bool rvs = false; //stainless
public string materiaal;
public void materiaalDropBox_SelectedIndexChanged(object sender, EventArgs e)
{
materiaal = materiaalDropBox.Text; //text currently in combobox
if (materiaal == "Staal")//material = steel
{
staal = true;
rvs = false;
}else if (materiaal == "RVS")
{
rvs = true; // material = stainless
staal = false;
}
}
public string soortboor; //kind of drill
public bool hss = false; //high speed steel drill
public bool hardmetaal = false; //cemented carbide drill
public bool spiraal = false; //basic drill
decimal VC = 0; // 318 * m/ms of drill on material
public void soortBoorDropBox_SelectedIndexChanged(object sender, EventArgs e)
{
soortboor = soortBoorDropBox.Text;// text currently in combobox
if (soortboor == "HSS")
{
hss = true; // drill is high speed steel
hardmetaal = false;
spiraal = false;
}else if (soortboor == "Hardmetaal")
{
hardmetaal = true;// drill is cemented carbide
hss = false;
spiraal = false;
}else if (soortboor == "Spiraal")
{
spiraal = true; // drill is normal
hss = false;
hardmetaal = false;
}
// if material && metal match a certain type, set VC value
if (rvs && hardmetaal)
{
VC = Convert.ToDecimal(318 * 30);
}else if (staal && hardmetaal)
{
VC = Convert.ToDecimal(318 * 60);
}else if (staal && hss)
{
VC = Convert.ToDecimal(318 * 40);
}else if (staal && spiraal)
{
VC = Convert.ToDecimal(318 * 15);
}else
{
VC = 0;
}
}
public decimal diameter; //drill diameter
string RPM; //required RPM ( this is the output we want to calculate)
public void diameterValue_ValueChanged(object sender, EventArgs e)
{
diameter = diameterValue.Value; //get diameter value from numericUpDown
RPM = Convert.ToString(VC / diameter);//convert VC divided by diamter value to string
toerentalValue.Text = RPM; // show RPM value as string in a textbox
}