“;日期时间";以及“;DateTime”;.(试图从日期选择器中获取值)
本文关键字:日期 选择器 获取 时间 quot 以及 DateTime | 更新日期: 2023-09-27 18:12:28
我对WPF和C#还很陌生,所以不要责怪我问了这个可能很愚蠢的问题。
我的WPF应用程序有两个日期选择器。我想在DateTime发生变化时从中获取它,并将其用作应用程序中其他内容的变量。所以我为它们中的每一个都有这样的东西(方法是由VS自动生成的(:
private void datePicker1_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
date1 = datePicker1.SelectedDate;
}
但问题是日期选择器中的日期是格式DateTime不是DateTime,我真的不知道那里的问号是什么意思,为什么会出现。我尝试了一些研究,但没有找到任何对我有帮助的东西。如果你能从约会选择者那里找到更好的约会方式,你也可以帮我。我只需要在我的xaml.cs代码中使用它,而不是在xaml中,而且我并不真正喜欢使用绑定,因为我不确定它在这种情况下是否按我的需要工作。
谢谢你的回答。
编辑:我想添加它显示此错误的信息:
无法隐式转换类型"System"。日期时间?'到’系统。DateTime'。存在显式转换(是否缺少铸造?(
?
的DateTime是可为null的DateTime,它可以保存null值。对于你的情况,你可以做:
private void datePicker1_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
if(datePicker1.SelectedDate.HasValue)
date1 = datePicker1.SelectedDate.Value;
}
Nullable<T>
C#
在C#和Visual Basic中,可以使用?值类型后的符号。例如,int?在C#或Integer中?在Visual Basic中声明了一个可以赋值的整数值类型无效的
可为null的DateTime可以为null。
DateTime
结构本身不提供null选项。但是DateTime?
可为null的类型允许您将null文本分配给DateTime
类型。它在对象模型中提供了另一个级别的间接性。
使用null DateTime结构的程序:C#
using System;
class Program
{
static void Main()
{
//
// Declare a nullable DateTime instance and assign to null.
// ... Change the DateTime and use the Test method (below).
//
DateTime? value = null;
Test(value);
value = DateTime.Now;
Test(value);
value = DateTime.Now.AddDays(1);
Test(value);
//
// You can use the GetValueOrDefault method on nulls.
//
value = null;
Console.WriteLine(value.GetValueOrDefault());
}
static void Test(DateTime? value)
{
//
// This method uses the HasValue property.
// ... If there is no value, the number zero is written.
//
if (value.HasValue)
{
Console.WriteLine(value.Value);
}
else
{
Console.WriteLine(0);
}
}
}
输出
0
9/29/2009 9:56:21 AM
9/30/2009 9:56:21 AM
1/1/0001 12:00:00 AM
最初在这里找到
祝你好运!
您不能创建没有任何值(即null(的DateTime
。它将始终具有默认值(DateTime.MinValue
(。
另一方面,DateTime?
是一种围绕DateTime
的包装器,它允许您保持其未定义。这可能非常有用,例如,如果您想让用户将其中一个日期字段留空(未选择日期=Null
(。
请记住,您需要使用DateTime?
作为任何需要进行相关工作的方法的参数类型。如果您依赖其他库,或者必须将这些数据传递给其他组件等,那么有时您可能会面临尴尬的情况。
典型挑战/决策:
">我在组件X中使用DateTime?
,它与使用DateTime
的组件Y对话-我应该重写Y中抛出一个异常">
只是在使用DateTime?
时需要注意和思考的事项。。
可为null的DateTime可以为null。DateTime结构本身不提供null选项。但是"DateTime?"可为null的类型允许您将null文本分配给DateTime类型。它提供了另一个级别的间接性。
//Created Date without empty or nullable
public DateTime CreatedDate { get; set; }
//with Nullable or empty
public DateTime? UpdatedDate { get; set; }
public DateTime? DeletedDate { get; set; }
结果视图:单击此处