在Windows窗体应用程序中,当用户在预先设置一个值之后更改值时,我可以更新if语句结果吗?

编程器

我有一个Windows窗体应用程序(在C#中),带有2个组合框,1个numericUpDown框,1个文本框。用户必须在第一个组合框中选择一个输入,在第二个组合框中选择一个输入,然后在numericUpDown中选择一个值。然后,我的程序必须在文本框中显示结果。

我用了几个if语句来显示结果。

我知道c#从顶部到底部读取程序,这对我造成了问题。

当用户选择所有选项时,我的程序将显示正确的结果,但是,如果用户返回并更改其选项之一,则结果不正确(我认为由于c#已经过去,它无法正确更新if语句那部分代码?)

我将每个if语句放在相应的“ selectedIndexChanged”和“ ValueChanged”中(这是正确的方法吗?)

我应该使用if语句以外的其他东西吗?还是我应该使用“计算”​​按钮,在显示任何结果之前用户首先必须按下该按钮?

我可以使用退货或其他东西吗?我不太明白那些

我试图将其他布尔值设置为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

    }
公式12

我认为将所有更新代码都放在每个selectedIndex_Changed事件中是不合适的。将您的代码更改为这样

public void materiaalDropBox_SelectedIndexChanged(object sender, EventArgs e)
{
   //Set your property values
   UpdateCalculation();
}

private void UpdateCalculation()
{
   //Holds all the other code for calculations
}

因此,每次SelectedIndex更改时,您只需将的值设置comboBox为私有字段,然后调用UpdateCalculations做剩余的工作即可。UpdateCalculations然后获取这些值并对其进行处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章