在C#中的DateTimePicker中设置Null值
我正在用C#开发一个基于winform
的桌面应用程序。 我希望用户将DateTimePicker设置为Null
。 我正在开发一个搜索框,如果设置为Null
,我想忽略日期
这是我在做的事情:
this.dateTimePicker2.CustomFormat = " "; this.dateTimePicker2.Format = DateTimePickerFormat.Custom; private void dateTimePicker2_ValueChanged(object sender, EventArgs e) { this.dateTimePicker2.CustomFormat = "dd-MM-yy"; }
到现在为止还挺好。 但是,一旦用户选择日期, dateTimePicker2
控件就会显示一些日期(用户选择的日期)。 无法再将日期设置为null。 我并不热衷于启用与datetimepicker
控件关联的复选框。
我想知道是否可以将datetimepicker
日期设置为null
。
谢谢
这是旧post的引用,但本网站上的其他用户已将其发布到此处
// Use ValueChanged to decide if the value should be displayed: dateTimePicker1.ValueChanged += (s, e) => { dateTimePicker1.CustomFormat = (dateTimePicker1.Checked && dateTimePicker1.Value != dateTimePicker1.MinDate) ? "MM/dd/yyyy" : " "; }; //When getting the value back out, use something like the following: DateTime? dt = (dateTimePicker1.Checked && dateTimePicker1.Value != dateTimePicker1.MinDate) ? (DateTime?) dateTimePicker1.Value : null; // or DateTime dt2 = (dateTimePicker1.Checked && dateTimePicker1.Value != dateTimePicker1.MinDate) ? dateTimePicker1.Value : DateTime.MinValue;
或者您可以将CustomFormat设置为“”空白空间,如下所示
dateTimePicker1.CustomFormat= " ";
在datetime
选择器属性中添加checkbox
:
string datevalue = dateTimePicker2.Checked != true ? "N/A": dateTimePicker2.Text;**
我想知道是否可以将datetimepicker日期设置为null
没有办法将DateTimePicker.Value
设置为null
,因为它的类型不可为空。 MSDN说:
如果未在代码或用户中更改Value属性,则将其设置为当前日期和时间(DateTime.Now)。
但这不是问题。 您应该将某些绑定属性设置为null,而不是DateTimePicker.Value
:
public class MyModel : INotifyPropertyChanged { public DateTime? DateTimeFilter { get { return dateTimeFilter; } set { if (dateTimeFilter != value) { dateTimeFilter = value; OnPropertyChanged("DateTimeFilter"); } } } private DateTime? dateTimeFilter; // INotifyPropertyChanged implementation is omitted } public partial class Form1 : Form { private readonly MyModel model; public Form1() { InitializeComponent(); model = new MyModel(); dateTimePicker1.DataBindings.Add("Value", model, "DateTimeFilter", true, DataSourceUpdateMode.OnPropertyChanged, DateTime.Now); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show(model.DateTimeFilter.HasValue ? string.Format("User has selected '{0}'.", model.DateTimeFilter) : "User hasn't selected anything."); } private void button2_Click(object sender, EventArgs e) { // here's the data binding magic: our model's property becomes null, // and datetimepicker's value becomes DateTime.Now, as it was initially set model.DateTimeFilter = null; } }
我不认为这是可能的,因为DateTime不可为空。
但你可以使用DateTime.MinValue
这样tou仍然可以轻松比较
if (datetimepicker.DateTime == DateTime.MinValue) { // just as good as null, maybe }
DateTime不是可空类型。
但你可以做到这一点:
只需在日期选择器上添加一个复选框,您就可以在属性上找到它并将ShowCheckBox设置为True 。
您可以使用此条件:
if(datePicker.Checked){ //Do some stuff to ignore the Date Picker value }
有关其他信息,我使用的是Microsoft Visual Studio 2010,我还没有检查其他IDE。
希望这有帮助。
干杯…
在SharePoint应用程序页面上使用DateTimeControl时,这对我有用。
上述就是C#学习教程:在C#中的DateTimePicker中设置Null值分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
if (dtcOpenDate.SelectedDate != DateTime.Now) { item["Open Date"] = dtcOpenDate.SelectedDate; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1023853.html