【发布时间】:2017-09-29 05:39:54
【问题描述】:
在 WinForms 应用程序中,我有一个 DateTimePicker
来自...Designer.cs的属性
this.dateTimePicker.AllowDrop = true;
this.dateTimePicker.CustomFormat = "HH:mm:ss";
this.dateTimePicker.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dateTimePicker.Location = new System.Drawing.Point(251, 12);
this.dateTimePicker.Name = "DateTimePicker";
this.dateTimePicker.ShowCheckBox = true;
this.dateTimePicker.ShowUpDown = true;
this.dateTimePicker.Size = new System.Drawing.Size(200, 28);
this.dateTimePicker.TabIndex = 1;
每当它的值发生变化时,我都会将我需要的内容保存到应用程序设置中(我对许多其他“字段”做了类似的事情,这是我遇到问题的第一个问题:
... this.Settings = [MyApplication].Properties.Settigns.Default.
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
this.Settings.dateTimePicker_Time = this.dateTimePicker.Value;
this.Settings.dateTimePicker_Checked = this.dateTimePicker.Checked;
this.Settings.Save();
}
应用程序启动时,实际上在主窗体的构造函数中,我将保存的值恢复如下,(注意ValueChange事件仅在分配初始值后才绑定到控件):
this.dateTimePicker_Time.Checked = this.Settings.dateTimePicker_Checked;
if (this.Settings.dateTimePicker_Time != null)
{
this.dateTimePicker.Value = this.Settings.dateTimePicker_Time;
}
this.dateTimePicker.ValueChanged += new System.EventHandler(this.dateTimePicker_ValueChanged);
问题
如果选中 DateTimePicker,则按预期分配 DateTime 值。
但是如果DateTimePicker没有勾选,DateTime的值没有赋值,好像DateTime.Now被赋值了。
因此,我也尝试了以下代码,但结果是一样的:
this.dateTimePicker_Time.Checked = this.Settings.dateTimePicker_Checked;
if (this.Settings.dateTimePicker_Time != null)
{
bool dateTimePicker_Checked = this.dateTimePicker.Checked;
this.dateTimePicker.Checked = true;
this.dateTimePicker.Value = this.Settings.dateTimePicker_Time;
this.dateTimePicker.Checked = dateTimePicker_Checked ;
}
this.dateTimePicker.ValueChanged += new System.EventHandler(this.dateTimePicker_ValueChanged);
编辑 我尝试将 DateTimePicker 属性数据绑定到应用程序设置,但结果与上面“手动”执行的操作相同。
【问题讨论】:
标签: c# winforms datetimepicker