2013-08-28 1 views
-1

양식의 특정 지점에 캘린더를 표시 할 수 있어야하는 클래스/기능을 만들지는 않았습니다. 그런 다음 선택한 날짜를 반환하십시오. 이것은 내가 생각 해낸 것입니다MonthCalendar가 C#에 표시되지 않습니다.

:

public static string ShowCalendar(Point locatieCalender) 
    { 
     MonthCalendar calender = new MonthCalendar(); 
     calender.Location = locatieCalender; 
     calender.Show(); 
     calender.Visible = true; 

     string date = calender.SelectionRange.Start.ToShortDateString(); 
     DateTime dateValue = DateTime.Parse(date); 
     string dateForTextbox = dateValue.ToString("dd-MM-yyyy"); 

     calender.Hide(); 
     return dateForTextbox; 

     } 

문제는 달력 양식에 표시되지 않습니다이다.

감사합니다.

public static string ShowCalendar(Point locatieCalender, Form F1) 
    { 
     MonthCalendar calender = new MonthCalendar(); 
     calender.Location = locatieCalender; 
     calender.Show(); 
     calender.Visible = true; 
     calender.BringToFront(); 
     calender.Parent = F1; 
     string date = calender.SelectionRange.Start.ToShortDateString(); 
     DateTime dateValue = DateTime.Parse(date); 

     string dateForTextbox = dateValue.ToString("dd-MM-yyyy"); 

     //calender.Hide(); 
     return dateForTextbox; 

    } 

그리고 함수 호출 :

string dateForTextbox = HelpFunction.ShowCalendar(calenderLocatie, this); 

이제 달력을 보여줍니다하지만 문자열이 반환되지 않습니다

확인을 사전에 덕분에 지금은 내 기능을 변경했습니다. 이벤트로 시도했지만 작동하지 않는 정적 기능 때문에 시도했습니다.

+2

왜 "calendar.Hide()"라고 부르시겠습니까? – htxryan

+0

날짜를 선택한 후에는 달력을 숨기고 싶습니다. 하지만 static methode 때문에 "dateselected"이벤트로 작동하지 않을 것입니다 –

답변

1

코드에서 calender.Hide()를 제거합니다. ,

//.... 
    string dateForTextbox = dateValue.ToString("dd-MM-yyyy"); 
    calender.Parent = yourForm; 
    return dateForTextbox; 
    } 

난 당신이 어딘가에 Form 클래스 MonthCalendar의 변수를 선언해야한다고 생각 로컬 변수 calendar 대신 ShowCalendar에서 사용 : 그리고 다음과 같이 Controls.Add 또는 Parent 속성을 통해 양식에 추가합니다.

+0

아마도이 메서드는 다른 클래스에 있고 내가 보여주고 자하는 형식이라고 언급 했어야합니다. –

+0

@ user2726516 OK, 그냥'this'를'your form reference'로 대체하십시오. –