DOBON.NET DOBON.NETプログラミング掲示板過去ログ

日付の入力制限

  • 題名: 日付の入力制限
  • 著者: うさ
  • 日時: 2005/08/12 14:12:32
  • ID: 12189
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[XP、C#]
分類:[.NET]

テキストボックスに、2005/08/12の形の日付を入力制限したいのですが、どうすればいいでしょうか?
例えば、1900年より前は不可にする、などです。
こんにちは、じゃんぬ です。

■No12189に返信(うささんの記事)
> テキストボックスに、2005/08/12の形の日付を入力制限したいのですが、どうすればいいでしょうか?
> 例えば、1900年より前は不可にする、などです。

その制限するタイミングは?
通常は、Validating イベントですが、それで良いですか?

まずは、日付かどうかを判断し、日付であれば、DateTime.Parse([その日付])
あとは、1900/01/01 より前かどうかを判断するだけですよね。
回答ありがとうございます。
ですが、まだよく分からないので、下に実際に作った(ほとんど作ってもらったものですが)ソースを貼り付けました。
どのようにしたらいいのでしょうか?

誕生日を入力するテキストボックス(textBox_Birth.Text)に生年月日を入力すると、星座のテキストボックス(textBox_Star.Text)に自動的に星座が表示される、という形のものを作り、年の部分は1900年から今年までと制限したいのですが、「 /08/15 」や「 1/08/15 」が入力OKになってしまいます。


private bool check_DateTime( string birth )
{
try
{
DateTime workDateTime;
workDateTime = DateTime.Parse( birth );

// 1900年未満は変換失敗を戻り値に返す
if( workDateTime.Year < 1900 )
{
return false;
}

// 現在以上は変換失敗を戻り値に返す
else if( DateTime.Now.Year < workDateTime.Year )
{
return false;
}

return true;
}
catch
{
return false;
}
}

private void textBox_Birth_TextChanged(object sender, System.EventArgs e)
{
try
{
// 入力された誕生日が日付型であるか確認
if( check_DateTime( textBox_Birth.Text ))
{
textBox_Star.Text = GetStar( DateTime.Parse( textBox_Birth.Text ));
}
else
{
textBox_Star.Text = "";
}
}
catch(Exception er)
{
MessageBox.Show(er.Message);
}
}

private void textBox_Birth_Leave(object sender, System.EventArgs e)
{
try
{

// 入力された誕生日が日付型であるか確認
if( check_DateTime( textBox_Birth.Text ))
{
textBox_Star.Text = GetStar( DateTime.Parse( textBox_Birth.Text ));
}

else
{
textBox_Birth.Text = DateTime.Today.ToString("d");
}
}

catch(Exception er)
{
MessageBox.Show(er.Message);
}
}
こんにちは、じゃんぬ です。

■No12210に返信(うささんの記事)
> 年の部分は1900年から今年までと制限したいのですが、「 /08/15 」や
> 「 1/08/15 」が入力OKになってしまいます。

Parse した後、どこが「年」になっているか確認していますか?
実際、どんな日付のインスタンスになっているか確認していますか?
これらは、「入力OKになってしまいます」の原因を掴むために、必要なプロセスです。

DOBON.NET | プログラミング道 | プログラミング掲示板