0

、私は行の編集をクリックすると、DataGridViewの中に日付がDateTimePickerのに行かなければならないが、この日の日は、0とのを開始するとき、私はこのエラーを取得:このエラーを解決する方法:System.FormatException: '文字列が有効なDateTimeとして認識されませんでした。インデックス0から始まる未知の単語があります。 ' WindowsフォームアプリケーションのC#IHAVE

System.FormatException: '文字列が有効なDateTimeとして認識されませんでした。インデックス0から始まる未知の単語があります。 ' 私のコードは次のとおりです。

int currentRow = int.Parse(e.RowIndex.ToString()); 
string ddn = dgv_patients[9, currentRow].Value.ToString(); 
dateTimePicker_ddn.Text = ddn; 

文字列DDNは02-月-95のように見え、その日は0で始まり、と私はDateTimePickerの中DDNを入れしようとすると、それが問題になります。

この問題を解決するために何度も試みましたが、解決策はありませんでした。

は写真を参照してください:

c# app code and error

+0

エラーメッセージは、文字列自体のフォーマットよりも重要です。 「インデックス0から始まる不明な単語があります」は、通常の互換性のない日付形式のエラーメッセージではありません。 dnnがDatePickerに割り当てられる前にdnnを見たり、インデックス0にあるものを表示したり、その情報をここで共有したりできますか? – Snympi

+0

お元気でありがとう!私は、datagridviewの最後にボタンの列を追加しました。この列は、datagridviewの穴の列のインデックスを変更しました。そのため、インデックス0はこの新しい列から開始し、1が最初の列です...私のdatetimepickerでは、columnの別の値が日付ではなくdatetime pickerになるためです! – HasanHajjar

+0

答えとして私のコメントを追加しました。 – Snympi

答えて

0

エラーメッセージは、文字列自体のフォーマットがより重要です。

"There is an unknown word starting at index 0"

は、通常の互換性のない日付形式のエラーメッセージではありません。 DatePickerに割り当てられる前にdnnを見て、インデックス0にあるものを表示し、文字列を割り当てていることを確認してください。

+0

ありがとう、あなたはそうだった – HasanHajjar

0

あなたはCustomFormatプロパティを見て、それはあなたが設定しようとしているテキストに合う確認する必要があります。 MSDNから

からDateTimePicker.Text Property

The string returned by this property is equivalent to the Value property with the appropriate formatting or custom formatting applied. For example, if the Value property is set to 06/01/2001 12:00:00 AM while the CustomFormat property is set to "dddd, MMMM dd, yyyy", the Text property value is "Friday, June 01, 2001".
When setting this property, the string must be convertible to an instance of the DateTime class. It is possible to define a custom format that results in a string that cannot be converted to a valid DateTime value. Because of this, the string returned from the Text property might cause an error if it is passed back to the Text property. If the string cannot be converted to a date/time value, the DateTime class throws a 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); 
+0

それは日時ではなく、日時ではありません!それは次のようになります:02-May-95 – HasanHajjar

+1

C#には 'Date'型はありません。だから、あなたの列はDateTimeで、ピッカーで 'Value'を設定するか、文字列を使う必要がある場合は' CustomFormat'を尊重します。 –

+1

もう一つのオプションは、 'DateTime 'を使うことです。ParseExact' –

関連する問題