в приложении формы windows, когда пользователь изменяет значение после его предварительной установки, могу ли я обновить результат оператора if? - PullRequest
1 голос
/ 29 мая 2020

У меня есть приложение формы 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

    }

1 Ответ

2 голосов
/ 31 мая 2020

Я не считаю правильным помещать весь код обновления в каждое событие 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 затем получает эти значения и работает над ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...