2012-08-09 4 views
0

두 폼을 사용하여 Windows 응용 프로그램을 만들고 있습니다. 첫 번째 폼에는 첫 번째 datetimepicker가 포함되어 있고 두 번째 폼에는 두 번째 datetimepicker가 들어 있습니다. 첫 번째 datetimepicker에서 날짜를 선택하면 두 번째 datetimepicker에서 미래 날짜가 6 개월 차이가됩니다. 다음 예Windows 응용 프로그램에서 datetimepicker의 미래 날짜를 표시하는 방법은 무엇입니까?

제가 2012년 8월 9일 즉 처음에 DateTimePicker 날짜를 선택하면, 즉 제이다 2013년 2월 8일을 DateTimePicker 표시 날짜 후 (: DD YYY mm)를

(mm : DD : YYY) 두 번째 datetimepicker에는 6 개월의 차이가 있어야합니다. .

+2

당신은 본 적이'DateTimePicker.Value' 속성 (http://msdn.microsoft.com/en-us/library/system.windows.forms을 도움이 될 것입니다 .datetimepicker.value.aspx)? – Dennis

답변

0

질문의 두 번째 진행 과정에서 두 가지 양식이 표시됩니다. DateTimePicker.ValueChanged 이벤트를 첫 번째 양식으로 노출 한 다음 DateTimePicker.Value 속성을 두 번째 양식으로 노출해야합니다. 예를 들어 :

class DateEventArgs : EventArgs 
{ 
    public DateTime Date {get; private set;} 

    public DateEventArgs(DateTime d) 
     : base() 
    { 
     this.Date = d; 
    } 
} 

class FirstForm : Form 
{ 
    DateTimePicker dtp = new DateTimePicker(); 

    public event EventHandler<DateEventArgs> DateSelected; 
    protected virtual void OnDateSelected(DateEventArgs e) 
    { 
     EventHandler<DateEventArgs> handler = DateSelected; 
     if(handler != null) handler(this, e); 
    } 

    public FirstForm() 
    { 
     this.Controls.Add(dtp); 
     dtp.ValueChanged += new EventHandler(dtp_ValueChanged); 
    } 

    void dtp_ValueChanged(object sender, EventArgs e) 
    { 
     DateEventArgs dea = new DateEventArgs(dtp.Value.Date); 
     OnDateSelected(dea); 
    } 
} 

class SecondForm : Form 
{ 
    DateTimePicker dtp = new DateTimePicker(); 

    public DateTime SelectedDate 
    { 
     set { dtp.Value = value; } 
    } 

    public SecondForm() 
    { 
     this.Controls.Add(dtp); 
    } 
} 

static class Controller 
{ 
    FirstForm f1; 
    SecondForm f2; 

    static void Go() 
    { 
     f1 = new FirstForm(); 
     f2 = new SecondForm(); 
     f1.DateSelected += new EventHandler<DateEventArgs>(f1_DateSelected); 

     f1.Show(); 
     f2.Show(); 
    } 

    static void f1_DateSelected(object sender, DateEventArgs e) 
    { 
     f2.SelectedDate = e.Date.AddMonths(6); 
    } 
} 
+0

+ = 유효하지 않은 토큰과 메소드에 오류가 표시되고 새 EventHandler에 리턴 유형이 있습니다. 어떻게이 메서드를 두 번째 형식으로 호출 할 수 있습니까? – Maddy

+0

첫 번째 양식에는 첫 번째 datetimepicker가 있고 두 번째 양식에는 두 번째 datetimepicker가 있습니다. – Maddy

+0

예이 사실을 깨닫고 대답을 업데이트했습니다. 그것은 테스트되지 않았지만 잘하면이 일은 당신이해야 할 일에 대한 아이디어를줍니다. –

0

using System; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     // Initialize picker 
     dateTimePicker2.Value = Convert.ToDateTime(ObjectForValue1).AddMonths(6); 
    } 

    private void dateTimePicker2_ValueChanged(object sender, EventArgs e) 
    { 
     // Set title bar to selected date. 
     DateTime result = dateTimePicker2.Value; 
     this.Text = result.ToString(); 
    } 
    } 
} 
+0

이것이 도움이되지 않는다면 .... 코드 –

+0

을 보여주세요. datetimepicker를 두 개의 다른 형식으로 처리 했으므로 웹 응용 프로그램에서 datetimepicker 컨트롤 – Maddy

+0

에 액세스 할 수 있습니다. 세션과 비슷한 유형의 캐싱 객체의 데이터를 저장할 수 있습니다. . –

관련 문제