2012-08-09 52 views
0

我正在創建一個Windows應用程序,我使用了兩個窗體。第一個窗體包含第一個datetimepicker,第二個窗體包含第二個datetimepicker。如果我選​​擇第一個datetimepicker中的任何日期,然後在第二個datetimepicker顯示未來的日期,即6個月的差異。以下是示例如何在windows應用程序中顯示datetimepicker中的未來日期?

如果我在選擇第一的DateTimePicker日期即2012年8月9日(毫米:DD:YYY)然後

在第二的DateTimePicker顯示日期即2013年2月8日(毫米:DD:YYY)第二個datetimepicker必須有6個月的差異。 。

+2

你見過'DateTimePicker.Value'財產(http://msdn.microsoft.com/en-us/library/system.windows.forms .datetimepicker.value.aspx)? – Dennis 2012-08-09 05:16:28

回答

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 2012-08-09 05:20:54

+0

我有第一個窗體上的第一個datetimepicker和第二個窗體上的第二個datetimepicker。 – Maddy 2012-08-09 05:25:36

+0

是的,我意識到這一點,並更新了我的答案。這是未經測試的,但希望這給你一個你必須做的事情的想法。 – 2012-08-09 05:31:32

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

如果這沒有幫助....向我們展示代碼 – 2012-08-09 05:31:42

+0

我有兩種不同形式的datetimepicker,所以如何在web應用中訪問datetimepicker控件 – Maddy 2012-08-09 05:42:23

+0

,可以使用session,類似的將數據存儲在某種對象中進行緩存。 – 2012-08-09 05:45:01

相關問題