2017-03-29 16 views
0

私の最初のプログラミング割り当てのタスクの一部として、ユーザーは何歳であるのかをユーザーに知らせるプログラムを作成する必要がありましたが、試してみてください。クラス/変数/配列のような基本的な概念については何も教えていません。ここで私のコードは、DateTimeオブジェクトのDateOfBirthがテキストボックスで無効であり、現在は無効なDOBだけがプログラムをクラッシュさせて再起動するかどうかをユーザーに伝えるために何かを追加する必要があります。ここにはすべてを計算するコードがあります。無効な日付を入力するとエラーが表示されます

private void buttonDaysOld_Click(object sender, EventArgs e) 
{ 
    DateTime DateOfBirth = new DateTime((int)comboBoxYear.SelectedItem, comboBoxMonth.SelectedIndex + 1, (int)comboBoxDay.SelectedItem); 
    TimeSpan diff = DateTime.Now - DateOfBirth; 
    int AgeInDays = (int)diff.TotalDays; 
    MessageBox.Show(textBoxName.Text+" you are "+(AgeInDays.ToString())+ " Days Old"); 
} 
+0

「クラス」は基本的な考えではないと思います。 – dcg

答えて

2

私はあなたがそれはあなたがintにあなたのコンボボックスの値をキャストしようとすると、アプリケーションがクラッシュするInvalidCastExceptionです取得しているエラーを推測しています。だからあなたがする必要があることは、あなたのコードをtry catchで囲み、catch部分で必要なものを実行することです。

try { 

    DateTime DateOfBirth = new DateTime((int)comboBoxYear.SelectedItem, comboBoxMonth.SelectedIndex + 1, (int)comboBoxDay.SelectedItem); 
    TimeSpan diff = DateTime.Now - DateOfBirth; 
    int AgeInDays = (int)diff.TotalDays; 
    MessageBox.Show(textBoxName.Text + " you are " + (AgeInDays.ToString()) + " Days Old"); 
} 
catch (InvalidCastException) 
{ 
    MessageBox.Show("Wrong Format"); 
} 

あなたはおそらく、あなたが取得している正確なエラーをチェックして、キャッチ(your_error)でそれを配置する必要があります。すべての例外をキャッチします

catch (Exception) 

をあなたが、そのトピックhereについての記事があることを行うことが推奨されていません。

いつでも置くことができます。

処理する必要がある複数の例外が発生している場合は、それを処理する方法を説明する大きなquestion about thatがあります。あなたは、あなたのプログラムの中で誕生検証の日時をしたい場合は、コードはそのようsowewayになりますdocumentation here.

+1

それは素晴らしい答えです。 – jmag

0

を読み取ることによって、のtry-catchとその仕組みについての詳細を学ぶことができます。

private void buttonDaysOld_Click(object sender, EventArgs e) 
{ 
    DateTime DateOfBirth; 
    try 
    { 
     DateOfBirth = new DateTime((int)comboBoxYear.SelectedItem, comboBoxMonth.SelectedIndex + 1, (int)comboBoxDay.SelectedItem); 
    } 
    catch (Exception exception) 
    { 
     MessageBox.Show(exception.Message); 
     return; 
    } 
    TimeSpan diff = DateTime.Now - DateOfBirth; 
    int AgeInDays = (int)diff.TotalDays; 
    MessageBox.Show(textBoxName.Text + " you are " + (AgeInDays.ToString()) + " Days Old"); 
} 

をあなたがなりたい場合は資格のソフトウェア開発者は、私はあなたをお勧め:

1)例外機構を備えた知人を取得し、それが本当にあなたのアプリケーションでエラー(例外的な状況)を処理するための便利な方法です: https://msdn.microsoft.com/en-us/library/ms173160.aspx

2)特別なコントロール - DatePicker - を使用してDateTime値を選択することができます。

関連する問題