Пользовательский элемент управления DateTimePicker - PullRequest
0 голосов
/ 10 августа 2011

Я создал пользовательский элемент управления, который реализует DateTimePicker.Но у меня проблемы с Databindings.Когда Control загружен, dtp.Value имеет значение по умолчанию DateTime .Now.Зачем?

//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)
    {
        // 
    }

1 Ответ

2 голосов
/ 10 августа 2011

По умолчанию для Value элемента управления DatePicker установлено значение DateTime.Now, если только вы не установили конкретное значение. Читать здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...