私は少し時間を探して試してきました。これは難しいとは思っていませんが、何の理由であっても私は何を変えても、月のカレンダーを使って日付を選択するときに同じエラーが発生します。C#textbox短い日付書式例外エラー、Windowsフォームアプリケーション
私はそれをどこでやっているのか分かりません。もしC#が私と気分が悪いのであれば。
使用中のフォームコントロールのいくつかの一般的な説明 - 2つのテキストボックス(textBox3とtextBox4)2つのボタン(ボタン5とbutton6)と2 monthcalendars(monthcalendar1及び2)
あなたがいずれかのボタン、それをクリックしてあります。そのボタンの月カレンダーを表示します。button5-> monthcalendar1、およびbutton6-> monthcalendar2:日付を選択すると、対応するtextBoxにmc1-> textBox3、mc2-> textBox4のようになります。
今、あなたはどのようなコントロールがどこに行くのかについていくつかの詳細を持っているはずです...これは、ユーザーが日付を選択したときに使用しているコードです。これはmc1と2の両方で似ています。それら....
private void monthCalendar2_DateSelected(object sender, DateRangeEventArgs e)
{
textBox4.Text = monthCalendar2.SelectionStart.ToShortDateString();
monthCalendar2.Location = new Point(306, 204);
monthCalendar2.Visible = false; //306,204
}
それはそうのようなテキストボックスにデータを格納します。だから私はtextBox3に格納されている日付の間の差を取得しようと、textBox4されており、M/D/YYYYを
;そしてtextBox4ためTEH日付が選択されている場合、すべての形式の例外コードエラーで戻ってきて、それが動作するように取得しようとするコードのnumourous構成を試してみました::
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
var startDate = DateTime.Parse(textBox3.Text);//, "M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture);
var endDate = DateTime.Parse(textBox4.Text);//, "M/d/yyyy"), System.Globalization.CultureInfo.InvariantCulture);
TimeSpan dateDiff = endDate - startDate;
string message = "";
if (endDate < startDate)
{
message = "Your departure date must be before your return date.";
}
else if(dateDiff.TotalDays == 0 || dateDiff.TotalDays == 1)
{
message = "Only planning one day of travel, please select one of the other options or select a longer period of travel.";
}
else if(dateDiff.TotalDays >= 7)
{
message = "Traveling less than or equal to seven days is not enough, select another option or a longer travel period.";
}
else
{
message = "Have a wonderful trip!";
}
MessageBox.Show(message, "Trip Notice");
}
私が使用しようとしました:
DateTime startDate, endDate;
startDate = DateTime.ParseExact(textBox3.Text,"M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture);
endDate = DateTime.ParseExact(textBox4.Text,"M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture);
あまりにも仕事なので、私が試した::
DateTime startDate, endDate;
startDate = Convert.toDateTime(textBox3.Text); //did the same for textBox4
それはどちらか動作しませんでしたしなかったこと。私は完全な喪失に瀕しています。そして、これらの投稿のほとんどが私をサークルで走らせています。助けてください。
' DateTime.ParseExact(使用して成功するために)の「以上」を使用しています文字列を 'DateTime'に変換するには、入力文字列が、使用される書式文字列で指定された書式と完全に一致していなければなりません。 – STLDeveloper
ToShortDateString()を使用する代わりに、ToString()を使用して書式を指定して、構文解析時に同じになるように指定することができます。 ToShortDateStringはカルチャに依存します。 – Etienne
@Etienne - ありがとう、私はあなたが最も "MM-dd-yyyy"を見たものにtextBoxesに入る値の書式を変更することができた、私はまた正確なParseに戻って日付形式を変更したそこに私はtoString()を設定し、悲しいことに私は同じ応答を得ました...それでもStringは有効なDateTimeとして認識されなかったと言っています.... –