2017-01-29 4 views
0

私は日付のマスクされたテキストボックスがあります。パース時にマスクを削除するには?

_student.Student_birthDate = DateTime.ParseExact(txtDataNasc.Text.ToString(), "yyyy-MM-dd h:mm tt", CultureInfo.InvariantCulture); 

しかし、それは有効な日時の文字列ではありません。私はそれが日時の値だ解析

<xctk:MaskedTextBox x:Name="txtDataNasc" Mask="##/##/####" HorizontalAlignment="Left" Height="27" TextWrapping="Wrap" VerticalAlignment="Top" Width="199" Margin="121,133,0,0" TextChanged="txtDataNasc_TextChanged"/> 

そして、そのテキストボックスText_Changed財産上を。私は試しました:

stg.Replace("/", "-").Replace("#", ""); 

しかし、それでもtextMaskを保持しています。パース時にマスクを削除するにはどうすればよいですか?

TextChanged上のすべてのものは、次のようになります。

string stg = txtDataNasc.Text.ToString(); 
stg.Replace("/", "-").Replace("#", ""); 
stg = stg + " 00:00:00"; 
_student.Student_birthDate = DateTime.ParseExact(txtDataNasc.Text.ToString(), "yyyy-MM-dd h:mm tt", CultureInfo.InvariantCulture); 
+0

あなたの 'マスク 'とあなたのフォーマットは私が見る限りでは一致しません。代わりに、単に 'MM/dd/yyyy'や' dd/MM/yyyy'(どちらが正しいのか分かりません)を使わないのはなぜですか?あなたのMaskedTextBoxが**持っていない場合はなぜ 'h:mm tt'部分が必要なのですか?この 'stg'文字列はどこでも使用する必要はありません**。また、これらの 'Replace'メソッドは新しい文字列インスタンスを返します。文字列は不変なので、現在のインスタンスは変更されません。 –

+0

'DateTime.ParseExact(txtDataNasc.Text、" MM/dd/yyyy "、CultureInfo.InvariantCulture)'または 'DateTime.ParseExact(txtDataNasc.Text、" dd/MM/yyyyy "、CultureInfo.InvariantCulture)' '## 'は日または月である)は、それを使用するのに十分だと思われる。 –

答えて

1

マスクはマスクで、値は値です。 2つの異なること。また、マスクがyyyy-MM-dd形式と一致しないため、DateTime.ParseExactメソッドは常に失敗します。投稿したサンプルコードはあまり意味がありません。試してみてください:

private void txtDataNasc_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    string stg = txtDataNasc.Text; 
    if (!string.IsNullOrEmpty(stg)) 
    { 
     stg += " 00:00:00"; 

     DateTime date = default(DateTime); 
     if (DateTime.TryParseExact(stg, "dd-MM-yyyy hh:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) 
     { 
      _student.Student_birthDate = date; 
     } 
    } 
} 

これは、TextBoxに29-01-2017を入力した場合に機能します。別の日付書式を使用する場合は、DateTime.TryParseExactメソッドに渡す書式文字列と、MaskedTextBoxのMas​​kプロパティの値を変更する必要があります。

文字列を有効なDateTimeに変換することはできません。MaskedTextBoxに完全な日付が入力されるまで、Student_birthDateプロパティを設定してください。

関連する問題