2012-08-09 57 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

相关问题