Windows Form 앱에서 사용자가 이전에 값을 설정 한 후 값을 변경할 때 if 문 결과를 업데이트 할 수 있습니까?

noobyprogrammer

2 개의 콤보 상자, 1 개의 numericUpDown 상자, 1 개의 텍스트 상자가있는 Windows Form 앱 (C #)이 있습니다. 사용자는 첫 번째 콤보 상자, 두 번째 콤보 상자에서 입력을 선택한 다음 numericUpDown에서 값을 선택해야합니다. 내 프로그램은 텍스트 상자에 결과를 표시해야합니다.

결과를 표시하기 위해 몇 개의 if 문을 사용했습니다.

나는 C #이 프로그램을 위에서 아래로 읽고 그것이 나에게 문제를 일으킨다는 것을 알고 있습니다.

사용자가 모든 옵션을 선택하면 내 프로그램이 올바른 결과를 표시하지만 사용자가 돌아가서 옵션 중 하나를 변경하면 결과가 잘못되었습니다 (C #이 이미 지나서 if 문을 올바르게 업데이트하지 않는다고 생각합니다 코드 부분?)

각 if 문을 해당 "selectedIndexChanged"및 "ValueChanged"에 넣습니다 (이 작업을 수행하는 올바른 방법입니까?).

if 문이 아닌 다른 것을 사용해야합니까? 또는 결과를 표시하기 전에 사용자가 먼저 눌러야하는 "계산"버튼을 사용해야합니까?

반환이나 뭔가를 사용할 수 있습니까? 나는 그것들을 정말로 이해하지 못한다

다른 bool이 true로 설정되어 있으면 다른 bool을 false로 설정하려고했지만 아무 일도하지 않았습니다.

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리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관