我有一个Windows窗体应用程序C#,当我点击一行上的编辑时,datagridview中的日期必须进入datetimepicker,但是当这个日期的日期开始时为0时,我得到这个错误:
System.FormatException:'字符串未被识别为有效的DateTime。从索引0开始有一个未知单词。 我的代码是:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if (position%3==0 && position>0){
AdViewHolder adViewHolder = (AdViewHolder) holder;
adViewHolder.m_dummyImage.setImageResource(R.mipmap.ic_launcher_round);
} else {
ItemViewHolder itemViewHolder = (ItemViewHolder) holder;
itemViewHolder.m_Text.setText(newList.get(position));
}
}
字符串ddn看起来像02-May-95,那天从0开始,当我尝试将ddn放入datetimepicker时会导致问题。
我多次尝试解决这个问题,没有解决办法!
看图片:
答案 0 :(得分:0)
您应该查看CustomFormat
属性并验证它是否适合您要设置的文本。
来自MSDN - DateTimePicker.Text Property
:
此属性返回的字符串等效于应用了适当格式或自定义格式的Value属性。例如,如果将Value属性设置为06/01/2001 12:00:00 AM,而CustomFormat属性设置为" dddd,MMMM dd,yyyy",则Text属性值为&#34 ; 2001年6月1日星期五"。
设置此属性时,该字符串必须可转换为DateTime类的实例。可以定义自定义格式,该格式导致无法转换为有效DateTime值的字符串。因此,从Text属性返回的字符串如果传回Text属性可能会导致错误。如果字符串无法转换为日期/时间值,则DateTime类将抛出FormatException。
如果DataGrid中的列已经是DateTime
,那么就不需要使用字符串,只需将其分配给选择器:
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);
答案 1 :(得分:0)
错误消息比字符串本身的格式更重要。
“从索引0开始有一个未知单词”
不是正常的不兼容日期格式错误消息。在将dnn分配给DatePicker
之前,请先查看它,以显示索引0处的内容并确认您正在分配字符串。