ihave windows表单应用程序c#,当我单击一行的编辑时,datagridview中的日期必须进入dateTimePicker,但是当日期的日期开始时,我获得了这个错误:
system.formatexception:'字符串未被识别为有效的日期时间。从索引0开始有一个未知的单词。我的代码是:
int currentRow = int.Parse(e.RowIndex.ToString());
string ddn = dgv_patients[9, currentRow].Value.ToString();
dateTimePicker_ddn.Text = ddn;
字符串DDN看起来像02-May-95,这一天始于0,当我尝试将DDN放入DateTimePicker中时,这会导致问题。
我尝试了很多次解决这个问题,没有解决方案可行!
请参阅图片:
c#应用代码和错误
错误消息比字符串本身的格式更重要。
"从索引0开始有一个未知的单词"
不是普通的不兼容日期格式错误消息。在将DNN分配到DatePicker
之前,请查看DNN,以显示索引0的内容并确认您正在分配一个字符串。
您应该查看 CustomFormat
属性并验证它适合您要设置的文本。
来自MSDN -DateTimePicker.Text Property
:
此属性返回的字符串等于值属性,并应用了适当的格式或自定义格式。例如,如果"值属性"设置为06/01/2001 12:00:00 AM,而定制属性设置为" DDDD,MMMM DD,YYYY",则文本属性值为" 2001年6月1日,星期五"。
设置此属性时,字符串必须可转换为DateTime类的实例。可以定义一种自定义格式,该格式导致无法转换为有效的DateTime值的字符串。因此,如果将文本属性返回的字符串传递回文本属性,可能会导致错误。如果字符串无法转换为日期/时间值,则DateTime类会抛出formatexception。
如果DataGrid中的列已经是DateTime
,则无需使用字符串,只需将其分配给Picker:
dateTimePicker_ddn.Value = (DateTime)dgv_patients[9, currentRow].Value;
根据注释是使用DateTime.ParseExact
的另一个选项例如:
DateTime dt = DateTime.ParseExact("02-May-95", "dd-MMM-yy", CultureInfo.InvariantCulture);
或确切的情况:
dateTimePicker_ddn.Value = DateTime.ParseExact(
dgv_patients[9, currentRow].Value.ToString(),
"dd-MMM-yy",
CultureInfo.InvariantCulture);