3 개의 텍스트 상자가있는 Windows 양식 응용 프로그램이 있습니다. 첫 번째 텍스트 상자의 텍스트가 0이면 다른 두 개의 텍스트 상자는 읽기 전용으로 설정되고 1이면 마지막 텍스트 상자는 읽기 전용이고, 2이면 모든 텍스트 상자를 편집 할 수 있습니다.다른 텍스트에 의존하는 C# 텍스트 상자 읽기 전용
내 코드가 작동하지만 값을 입력 한 다음 프로그램을 변경하면 프로그램이 어떻게 종료됩니까?
여기는 (Tusk1Length) 및 (Tusk1Length)의 읽기 전용 속성과 값에 따라 읽기 전용 속성을 변경하는 첫 번째 텍스트 상자 (NumberOfTusks)에 대한 코드입니다.
private void NumberOfTuskstxt_TextChanged(object sender, EventArgs e)
{
if (int.Parse(NumberOfTuskstxt.Text) == 0)
{
Tusk1Lengthtxt.Text = "N/A";
Tusk1Lengthtxt.ReadOnly = true;
Tusk2Lengthtxt.Text = "N/A";
Tusk2Lengthtxt.ReadOnly = true;
}
else if (int.Parse(NumberOfTuskstxt.Text) == 1)
{
Tusk1Lengthtxt.Text = "";
Tusk1Lengthtxt.ReadOnly = false;
Tusk2Lengthtxt.Text = "N/A";
Tusk2Lengthtxt.ReadOnly = true;
}
else
{
Tusk1Lengthtxt.Text = "";
Tusk1Lengthtxt.ReadOnly = false;
Tusk2Lengthtxt.Text = "";
Tusk2Lengthtxt.ReadOnly = false;
}
}
나는 NumberOfTusks에 1 입력 한 다음, 2 코드 충돌 값을 변경하고 나에게 충돌 "이" " 'System.FormatException이'가 mscorlib.dll에서 발생 유형의 처리되지 않은 예외"를 제공하는 경우 내가 백 스페이스를 치면 일어난다. 어떻게하면 값을 변경하면 충돌하지 않도록 수정할 수 있습니까?
숫자가 아닌 다른 값으로 변경 하시겠습니까? 그게 당신에게 확실히 문제가 될 것입니다. 당신은 적어도 당신의 입력이 매번 정수가 될 것이라고 가정하는 대신에'int.TryParse'를 사용해야합니다. –
입력은 int로 유지됩니다. 1에서 2로 변경하면 충돌이 발생합니다. –
아니요, 댓글이 잘못되었습니다. 입력이 int를 유지하지 않습니다. 프로세스에서 문자를 삭제하고 있으므로 입력을 2로 설정하기 전에' ""'가됩니다. –