2011-08-10 40 views
0

我創建了實現DateTimePicker的用戶控件。但我在Databindings有問題。當加載Control時,dtp.Value的默認值爲DateTime。現在的值。爲什麼?自定義DateTimePicker控件

//Part of Form InitializeComponent() : 
this.dtp_user.DataBindings.Add(new System.Windows.Forms.Binding("Value",   this.employeesBindingSource, "BirthDate", true)); 

// Custom Control Contains two buttons and textBox (usrText) 
public partial class usrDateTimePicker : UserControl 
{ 

    private DateTimePicker dtp; 

    private bool _cheked; 
    public bool Checked 
    { 
     get { return _cheked; } 
     set { _cheked = value; } 
    } 

    public DateTime Value 
    { 
     get { return dtp.Value; } 
     set 
     { 
      if (value < DateTime.MinValue && value > DateTime.MaxValue) 
       value = DateTime.Now; 
      dtp.Value = value; 
     } 
    } 

    public override string Text 
    { 
     get { return usrText.Text; } 
    } 

    public ControlBindingsCollection DataBindings 
    { 
     get { return dtp.DataBindings;} 
    } 

    usrCalendar clnd; 
    Popup _popup; 

    public usrDateTimePicker() 
    { 
     InitializeComponent(); 
     InitStyles(); 
     InitControls(); 
    } 

    private void InitStyles() 
    { 
     // 
    } 

    private void InitControls() 
    { 
     dtp = new DateTimePicker(); 
     clnd = new usrCalendar(); 
     _popup = new Popup(clnd); 
     _popup.Closed += popup_Closed; 
    } 
    protected override void OnLoad(EventArgs e) 
    { 
     usrText.Text = FormatDate(dtp.Value); 
     base.OnLoad(e); 
    } 

    protected override void OnSizeChanged(EventArgs e) 
    { 
     // 
    } 

    private void btn_datetimepick_Click(object sender, EventArgs e) 
    { 
     if (!_popup.Visible) 
     { 
      _popup.Show(this); 
     } 
     else 
      _popup.Close(); 
    } 

    private void popup_Closed(object sender, ToolStripDropDownClosedEventArgs e) 
    { 
     dtp.Value = clnd.Value; 
     usrText.Text = FormatDate(dtp.Value); 
     _cheked = true; 
     if (usrText.Text == string.Empty || usrText.Text == "") 
      _cheked = false; 
    } 

    private string FormatDate(DateTime date) 
    { 
     // 
    } 
+0

程序啓動時,首先加載自定義控件的構造函數 - usrDateTimePicker()(請參閱示例),然後加載Form的InitializeComponent()的一部分,其中綁定源爲setUP。並且畢竟當窗體加載方法OnLoad()在自定義控件中將被啓動。所以我期望看到不是dtp.Value的默認值 –

回答

2

默認情況下DatePicker控件的Value除非你設置了專門的值設置爲DateTime.NowRead Here