저는 현재 계산기 유형 프로그램을 설정해야하는 숙제를하고 있습니다. 하나 또는 두 개의 사용자 입력 값 (계산에 따라 다름)을 읽은 다음 값을 기반으로 계산을 수행해야합니다.텍스트 상자 및 라디오 버튼을 기반으로 한 버튼 활성화
는 I 현재
- 2 텍스트 박스 (
tbInput1
및tbInput2
) - 4 라디오 버튼을 가지고
- 하나 개의 버튼 (
btnCalc
) - 결과가 표시 될 것이다 빈
label
한다.
두 개의 radioButton (rbtnTrap
및 rbtnFak
)이 선택되면 첫 번째 textBox를 비활성화합니다. 다른 두 개는 입력해야하는 두 개의 값이 필요하므로 체크하면 두 개의 textBox를 모두 사용할 수 있습니다. btnCalc
은 해당 수의 textBoxes에 value가있는 경우 자체를 사용하도록 설정됩니다. 관련 textBox 수는 선택한 라디오 버튼에 따라 다릅니다.
문제는 내가 rbtnTrap
또는 rbtnFak
(tbInput1
해제) 확인 tbInput2
의 정수를 입력 할 때, btnCalc
이 비활성화 상태를 유지한다는 것이다.
: tbInput1
에 대한 _TextChanged
이벤트에서
- , 나는 아래에 게시 두 번째
if
블록의 정확한 복사본을 가지고있다.tbInput1
은rbtnPot
또는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;
}
}
아하! 음, 확실히! = null 구성 요소를 삭제하면 버튼을 다시 비활성화하는 이유를 알 수 있습니다. 나는 그것이 어떻게 든 할 수있는 프로그램을 설정 했음에 틀림 없기 때문에 오히려 어디서 왔는지 확신 할 수 없다. 그 어떤 힌트라도? (그리고 똑 바른 답은 완벽하지 않습니다. 배우고 싶습니다 - 복사/붙여 넣기가 아닙니다 :)) – Xarth
"왜! = null 구성 요소를 삭제 하시겠습니까?" 당신은'someObject.Dispose()'에서 "disposing"용어를 사용하고 있습니까? (귀하의 문제에 대한 편집을 참조하십시오.) – Otiel
아, 죄송합니다. F10을 사용하여 문제가 해결되면 designer.cs 파일로 이동합니다. 첫 번째로 보았던 것은'protected override void void Dispose (bool disposing)'와 그 아래 if (disposing && (components! = null))입니다. 분명히 당신이 의미하는 것이 아닙니다. 편집 및 팁 주셔서 감사합니다. 올바른 조항을 확인한 후 코드를 수정하는 방법에 대해 알아 보겠습니다. :) – Xarth