2011-11-26 4 views
3

저는 현재 계산기 유형 프로그램을 설정해야하는 숙제를하고 있습니다. 하나 또는 두 개의 사용자 입력 값 (계산에 따라 다름)을 읽은 다음 값을 기반으로 계산을 수행해야합니다.텍스트 상자 및 라디오 버튼을 기반으로 한 버튼 활성화

는 I 현재

  • 2 텍스트 박스 (tbInput1tbInput2)
  • 4 라디오 버튼을 가지고
  • 하나 개의 버튼 (btnCalc)
  • 결과가 표시 될 것이다 빈 label한다.

두 개의 radioButton (rbtnTraprbtnFak)이 선택되면 첫 번째 textBox를 비활성화합니다. 다른 두 개는 입력해야하는 두 개의 값이 필요하므로 체크하면 두 개의 textBox를 모두 사용할 수 있습니다. btnCalc은 해당 수의 textBoxes에 value가있는 경우 자체를 사용하도록 설정됩니다. 관련 textBox 수는 선택한 라디오 버튼에 따라 다릅니다.

문제는 내가 rbtnTrap 또는 rbtnFak (tbInput1 해제) 확인 tbInput2의 정수를 입력 할 때, btnCalc이 비활성화 상태를 유지한다는 것이다.

나는 지금까지 무엇을 설명하려고합니다

: tbInput1에 대한 _TextChanged 이벤트에서

  • , 나는 아래에 게시 두 번째 if 블록의 정확한 복사본을 가지고있다. tbInput1rbtnPot 또는 rbtnFib을 선택한 경우에만 활성화되므로 해당되는 경우에만 제어가 실행됩니다. tbInput2 항상 이 가능하며, 컨트롤이 라디오 버튼이 선택되어 상관없이 실행해야하기 때문에 tbInput2에 대한 _TextChanged 이벤트에서
  • , 난 내가 rbtnTrap 또는 rbtnFak을 선택하면 컨트롤이 다른 실행해야하지만 반대로, 아래가 rbtnPot 또는 rbtnFib.

아니면 내 이해입니다. 나는 제안과 시정에 대해 분명히 열려있다.

private void tbInput2_TextChanged(object sender, EventArgs e) 
{ 
    //For single-field values 
    if ((rbtnTrap.Checked || rbtnFak.Checked) && 
     !string.IsNullOrWhiteSpace(this.tbInput2.Text)) 
    { 
     btnCalc.Enabled = true; 
    } 
    else 
    { 
     btnCalc.Enabled = false; 
    } 
    // For multi-field values 
    if ((rbtnPot.Checked || rbtnFib.Checked) && 
     (!string.IsNullOrWhiteSpace(this.tbInput1.Text) 
     && !string.IsNullOrWhiteSpace(this.tbInput2.Text))) 
    { 
     btnCalc.Enabled = true; 
    } 
    else 
    { 
     btnCalc.Enabled = false; 
    } 
} 

답변

2

숙제이기 때문에 나는 답을 줄 것이지만 대신 힌트를 드리겠습니다. 문제는 tbInput2_TextChanged 이벤트 코드 (게시 한 코드)에 있습니다.

rbtnTrap 또는 rbtnFak이 선택되면 코드는 생각하지 않는 경로를 따라 실행됩니다.tbInput2_TextChanged 코드의 첫 번째 줄에 중단 점 (F9)을 설정하고 tbInput2에 텍스트를 입력 한 후 단계별 코드 (F10)를 실행합니다.
btnCalc 단추가 인 것처럼 활성화되어 있지만 다음 순간에 비활성화 된 이유를 알 수 있습니다..

이후에 도움이 필요하시면 언제든지 말씀해주십시오. :)


편집

문제는 if 블록에서 온다. rbtnTraprbtnFak 중 하나를 선택하면 :

  • 후 첫 번째 블록의 if 절에 실행됩니다 코드 할 btnCalc.Enabled = true;하지만 ... 그것은 또한 두 번째 블록의 else 절에 실행됩니다
  • ((rbtnPot.Checked || rbtnFib.Checked)이 false이므로) btnCalc.Enabled = false;을 수행하십시오.
+0

아하! 음, 확실히! = null 구성 요소를 삭제하면 버튼을 다시 비활성화하는 이유를 알 수 있습니다. 나는 그것이 어떻게 든 할 수있는 프로그램을 설정 했음에 틀림 없기 때문에 오히려 어디서 왔는지 확신 할 수 없다. 그 어떤 힌트라도? (그리고 똑 바른 답은 완벽하지 않습니다. 배우고 싶습니다 - 복사/붙여 넣기가 아닙니다 :)) – Xarth

+0

"왜! = null 구성 요소를 삭제 하시겠습니까?" 당신은'someObject.Dispose()'에서 "disposing"용어를 사용하고 있습니까? (귀하의 문제에 대한 편집을 참조하십시오.) – Otiel

+0

아, 죄송합니다. F10을 사용하여 문제가 해결되면 designer.cs 파일로 이동합니다. 첫 번째로 보았던 것은'protected override void void Dispose (bool disposing)'와 그 아래 if (disposing && (components! = null))입니다. 분명히 당신이 의미하는 것이 아닙니다. 편집 및 팁 주셔서 감사합니다. 올바른 조항을 확인한 후 코드를 수정하는 방법에 대해 알아 보겠습니다. :) – Xarth

0

나는이 문제를 (내가 설명이 사방에 조금 미안 해요)하지만, 내가 볼 않는 한 가지, 당신은 단지 구현 있다는 것을 이해 얼마나 잘 모르겠어요 확인해야 할 두 가지 컨트롤이있을 때 한 이벤트에서 테스트합니다.

간단한 문제처럼 들리지만 어디에서 누가 무엇을 해야하는지 이해할 수 없으므로 위의 2 센트가 쓸모없고 질문을 다시 설명 할 수 있다면 아마 그렇게 될 것입니다. 솔루션을 찾는 데 도움이

+0

아무 문제 없음! 명확성을 위해 편집 - 나는 희망합니다. 바라건대 내 말투가 더 이해가되기를 바랍니다. :) – Xarth

관련 문제