2012-10-18 4 views
1

학생 정보 및 유학생을위한 별도의 수업으로 Windows 양식을 만들고 있습니다. 학생/유학생을위한 Year Mark가 0 이상 100 미만임을 확인해야합니다.numeric 및 DateTime 입력의 구문 분석 및 유효화

생년월일을 dd/mm/yyyy로 표시하고 싶지만 현재 그 시간 플러스.

나는 아래의 코드가 포함됩니다되는 것입니다 날짜에 대한 ToString() 기능의 과부하가 올해 마크

try // Trying to do the thing in the curly braces 
{ 
    student1.YearMark = Int32.Parse(txtYearMark.Text); 
} 
catch (Exception) // If it doesn't work skip the crash and print this 
{ 
    MessageBox.Show("The Year mark must be a number and can't be empty"); 
} 
+0

그것은 완전한 대답 아니지만, 날짜 시간에 TryParse 방법을 사용하여 시도하고 결과의 다양한 속성을보고있다 DateTime 인스턴스입니다. – MNGwinn

답변

1

내가 날짜를 입력 할 수있는 DateTimePicker 컨트롤 대신 텍스트 상자를 사용하는의 YearMark를 입력 할 NumericUpDown 컨트롤을 사용하도록 추천을 표시하면서 // 대문자 MM은 월을 나타냅니다.

DateTimePicker 컨트롤을 사용하면 표시 형식을 정의하고 항목을 특정 범위로 제한 할 수 있습니다. 올바르게 기억한다면 Value 속성은 DateTime 유형이므로 문자열을 구문 분석 할 필요가 없습니다.

NumericUpDown 컨트롤을 사용하면 허용되는 값의 범위를 정의 할 수 있습니다. Value 속성은 Decimal 유형이지만 안전하게 Int32로 캐스팅 할 수 있습니다. String을 파싱하는 것보다 훨씬 안전합니다.

0

위해 이제 첫 출산의

날짜

student1.DateOfBirth = DateTime.Parse(txtDateofbirth.Text).Date; 

if (string.IsNullOrEmpty(txtDateofbirth.Text)) 
{ 
    MessageBox.Show("Please enter a DoB"); 
} 

을 원하는 형식을 정확하게 지정할 수 있습니다.

사용 가능한 형식에 대한 자세한 내용은
Date l_date = Date.Today(); 
l_date.ToString("dd/MM/yyyy"); 

, 설명서를 참조하십시오
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

intstring 지금처럼 Int32.TryParse 기능을 통해 수행 할 수 있습니다 구문 분석 :

string x = "32"; 
int y = -1; 
if (!x.TryParse(x, out y)){ 
    // The parse failed 
} 

을 다음을 int의 값을 테스트하여 원하는 값 범위 내에 있는지 확인할 수 있습니다. 당신이 시간 범위 객체를 생성하고 '년'속성을 얻을 수 있도록

if (y > 0 && y <= 100){ 
    // Do something 
} 
0
  1. 당신은 DateTime 개체와 현재 날짜 사이의 차이를 얻을 필요가있다.

    TimeSpan diff = new DateTime(). subtract (dateOfBirth);

    경우 (diff.Years> 0 & & diff.Years < 100) isValid = TRUE;

  2. DateTime 개체를 필요한 형식으로 표시하려면 Formatter와 함께 ToString() 메서드를 사용하십시오.

    정확한 문제를 해결하려면 다음을 수행하십시오

    dateOfBirth.ToString ("DD/MM은/년을"); 소문자 MM 분

0

당신이 여기를 테스트하기 위해 간단한 방법을 만들 수는 예를 들어뿐만 아니라

IsDate(txtYearMark.Text); 
    public static bool IsDate(string date) 
    { 
     DateTime Temp; 
     return(DateTime.TryParse(date, out Temp)&&date.Length>=10) 
    }