C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: テキストボックスの数値を変換して表示する


(過去ログ 31 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■14939 / inTopicNo.1)  テキストボックスの数値を変換して表示する
  
□投稿者/ くま子 (3回)-(2008/02/28(Thu) 22:52:38)

分類:[VB.NET/VB2005] 

2008/02/28(Thu) 22:54:51 編集(投稿者)

言語はVB2005です

この前質問させてもらった件は無事解決することができました。
答えてくださった方どうもありがとうございました。

また解らないことが出てきたのでどなたかアドバイスをお願いします。

まず一つ目が
テキストボックスに入力された数値を日付型に変換して表示させる方法です
例えば20080201と入力されてフォーカスが他に移ったとき「2008/02/01」に変わる
というものです。
・Validatingであっていますか?
・その日の日付に変わるのではなく入力された数値がそのまま変わってほしい


もう一つが
テキストボックスに入力された数値に三桁区切りのカンマをつけて表示する方法
上とおなじでフォーカスが他に移ったときに
「3333333333」と入力されたら「3,333,333,333」にかわるというものです。

あとゼロ埋めと通貨型に変換する方法です。

どれもネットで検索したらやり方が載ってないこともないんですが
あまり理解できなかったのでこちらで質問させてもらいました。

わかるやつだけでもいいので教えてもらえたら助かります。
よろしくお願いします。
引用返信 編集キー/
■14943 / inTopicNo.2)  Re[1]: テキストボックスの数値を変換して表示する
□投稿者/ やじゅ (196回)-(2008/02/28(Thu) 23:34:41)
やじゅ さんの Web サイト
No14939 (くま子 さん) に返信
> テキストボックスに入力された数値を日付型に変換して表示させる方法です
> 例えば20080201と入力されてフォーカスが他に移ったとき「2008/02/01」に変わる
> というものです。
> ・Validatingであっていますか?
> ・その日の日付に変わるのではなく入力された数値がそのまま変わってほしい
>
> テキストボックスに入力された数値に三桁区切りのカンマをつけて表示する方法
> 上とおなじでフォーカスが他に移ったときに
> 「3333333333」と入力されたら「3,333,333,333」にかわるというものです。
>

Leaveイベントで書き換えてください。
「Leave 書き換え」あたりで検索すればいいです。
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200508/200508_05080063.html

コントロールの遷移制御
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard23.htm
引用返信 編集キー/
■14962 / inTopicNo.3)  Re[1]: テキストボックスの数値を変換して表示する
□投稿者/ まどか (475回)-(2008/02/29(Fri) 11:59:29)
No14939 (くま子 さん) に返信
> 例えば20080201と入力されてフォーカスが他に移ったとき「2008/02/01」に変わる
> テキストボックスに入力された数値に三桁区切りのカンマをつけて表示する方法
> 「3333333333」と入力されたら「3,333,333,333」にかわるというものです。
>
> あとゼロ埋めと通貨型に変換する方法です。

String.Format
http://msdn2.microsoft.com/ja-jp/library/system.string.format(VS.80).aspx
String.Format(String, Object)
http://msdn2.microsoft.com/ja-jp/library/fht0f5be(VS.80).aspx

Int32.ToString
http://msdn2.microsoft.com/ja-jp/library/system.int32.tostring(VS.80).aspx
Int32.ToString(String)
http://msdn2.microsoft.com/ja-jp/library/8wch342y(VS.80).aspx

Int32は型としての一例です。
いずれのページも書式についてのリンクがありますので、この際覚えてしまいましょう。

ゼロ埋め
http://msdn2.microsoft.com/ja-jp/library/system.string.padleft(VS.80).aspx

通貨型への変換 ※通貨型は無いので10進型(Decimal)を使うことになる
http://msdn2.microsoft.com/ja-jp/library/s2dy91zy(VS.80).aspx
http://msdn2.microsoft.com/ja-jp/library/system.decimal(VS.80).aspx
http://msdn2.microsoft.com/ja-jp/library/system.decimal.tryparse(VS.80).aspx

速度的に不利な点もあるので、通貨である必要性と有効桁数などを検討してIntegerにしてしまう場合もあったりします。

業務アプリを作っている人にとっては頻繁に使いますから、覚えてしまいましょう。


引用返信 編集キー/
■15096 / inTopicNo.4)  Re[2]: テキストボックスの数値を変換して表示する
□投稿者/ くま子 (4回)-(2008/03/04(Tue) 13:26:16)
ありがとうございました。
やじゅさんとまどかさんが教えてくれた方法で
調べてみたら日付型以外はOKをもらえました。

あと日付型がどうしてもわかりません。

一度出来かけたのですが存在しない数値はエラーにとのことなので
いろいろ方法を探しているのですが解決しません。

詳しく教えていただけたらたすかります。
よろしくお願いします。

例えば20080303→2008/03/03で
20080231→エラーになるようにしたいです。

substringとかmaskedtextboxとかを使うのでしょうか?

よろしくおねがいします。
引用返信 編集キー/
■15097 / inTopicNo.5)  Re[3]: テキストボックスの数値を変換して表示する
□投稿者/ まどか (480回)-(2008/03/04(Tue) 13:55:47)
No15096 (くま子 さん) に返信
> 例えば20080303→2008/03/03で
> 20080231→エラーになるようにしたいです。

DateTime.TryParse()が使えます。
ただし、8桁の数字は無条件にFalseになりますので、日付を表す書式に整形して呼び出す必要があると思います。
ヘルプに日付だと認識する書式が載っていますので、調べてみてください。
上の例でいうとDateTime.TryParse("2008/03/03", dateDummy)のような呼び方です。※ちなみに"/"だとFalseになるはずなので使えません。
引用返信 編集キー/
■15098 / inTopicNo.6)  Re[4]: テキストボックスの数値を変換して表示する
□投稿者/ ぽぴ王子 (325回)-(2008/03/04(Tue) 14:01:29)
ぽぴ王子 さんの Web サイト
No15096 (くま子 さん) に返信

> ありがとうございました。
> やじゅさんとまどかさんが教えてくれた方法で
> 調べてみたら日付型以外はOKをもらえました。

「OKをもらえました」というのがよく意味がわかりませんが、なんとか
できたということですよね。

> あと日付型がどうしてもわかりません。
>
> 一度出来かけたのですが存在しない数値はエラーにとのことなので
> いろいろ方法を探しているのですが解決しません。

よく言われることですが、この「いろいろ」をキチンと書いたほうがいいと思います。
くま子さんがどのような方法を試したのか明確にしないと、試してみてダメだった方法
をまた提案してしまう可能性もありますので。


これもいろいろと定石があるかと思いますが、自分がよく使う方法を。
(環境がないのでとりあえず言葉で書いてみます)

1. 20080231 を substring で 2008 と 02 と 31 に分割。
2. それぞれを数値に変換(この場合は year, month, day と表記)
3. Dim x As DateTime = New DateTime(year, month, day) で日付型の変数を作成
4. x.ToString("yyyyMMdd") を元の 20080231 と比較
5. 違っていたら正しい日付ではない

# …っと書いていたらまどかさんが先に書いちゃってました。
# ただ僕は DateTime.TryParse は使わないほうがいいかなぁと思ったり思わなかったり…
引用返信 編集キー/
■15099 / inTopicNo.7)  Re[5]: テキストボックスの数値を変換して表示する
□投稿者/ Hongliang (251回)-(2008/03/04(Tue) 14:04:41)
TryParseExact...
// なんか影薄いよね
引用返信 編集キー/
■15100 / inTopicNo.8)  Re[6]: テキストボックスの数値を変換して表示する
□投稿者/ まどか (481回)-(2008/03/04(Tue) 15:06:16)
No15099 (Hongliang さん) に返信
> TryParseExact...
> // なんか影薄いよね

こんな感じでしょうか。

Dim d As DateTime
Dim Success As Boolean
= DateTime.TryParseExact("20080229", "yyyyMMdd", Globalization.DateTimeFormatInfo.InvariantInfo, Globalization.DateTimeStyles.None, d)
引用返信 編集キー/
■15102 / inTopicNo.9)  Re[5]: テキストボックスの数値を変換して表示する
□投稿者/ くま子 (5回)-(2008/03/04(Tue) 16:34:30)
> 1. 20080231 を substring で 2008 と 02 と 31 に分割。
> 2. それぞれを数値に変換(この場合は year, month, day と表記)
> 3. Dim x As DateTime = New DateTime(year, month, day) で日付型の変数を作成
> 4. x.ToString("yyyyMMdd") を元の 20080231 と比較
> 5. 違っていたら正しい日付ではない

substringで分割なんですが
year = Me.textbox1.Text.Substring(0, 4)
month = Me.textbox1.Text.Substring(4, 2)
day = Me textbox1.Text.Substring(6, 2)
で合っていますか?
(year年、month月、day日)

そのあとの数値に変換というのはどういうことでしょうか?

すごく簡単に書いてくれているとは思うのですが
正直あまり理解できません。
基本が出来てないのでそこからやるべきだとは思うんですが
会社で出された課題なのでやらないわけにはいかないんです。

すみませんがもう少し砕いて説明してもらえると助かります。
よろしくお願いします。

引用返信 編集キー/
■15103 / inTopicNo.10)  Re[6]: テキストボックスの数値を変換して表示する
□投稿者/ やじゅ (211回)-(2008/03/04(Tue) 16:43:33)
No15102 (くま子 さん) に返信
> そのあとの数値に変換というのはどういうことでしょうか?

疑問に思ったことや、やりたいことをキーワードにして検索すれば
すぐに答えはでるわけですよ。

「数値 変換 VB.NET」で検索する
http://hiro.wankuma.com/VBNET2005/String/String12.htm

引用返信 編集キー/
■15107 / inTopicNo.11)  Re[7]: テキストボックスの数値を変換して表示する
□投稿者/ ぽぴ王子 (326回)-(2008/03/04(Tue) 18:00:37)
ぽぴ王子 さんの Web サイト
No15099 (Hongliang さん) に返信
> TryParseExact...
> // なんか影薄いよね

ぐはぁ。本気で忘却の彼方でした。
確かにこれを使ったほうが楽ですね。


No15102 (くま子 さん) に返信

> substringで分割なんですが
> year = Me.textbox1.Text.Substring(0, 4)
> month = Me.textbox1.Text.Substring(4, 2)
> day = Me textbox1.Text.Substring(6, 2)
> で合っていますか?
> (year年、month月、day日)

そんな感じでいいと思います。

> そのあとの数値に変換というのはどういうことでしょうか?

これはやじゅさんが既に答えてくださっているので割愛。

> すごく簡単に書いてくれているとは思うのですが
> 正直あまり理解できません。
> 基本が出来てないのでそこからやるべきだとは思うんですが
> 会社で出された課題なのでやらないわけにはいかないんです。

基本が出来ていないことは自覚されているんですよね。
だとしたらまずやるべきは基本を身につけるところじゃないでしょうか。
課題とやらがなんなのか、前回の「OKをもらえました」と同様に意味が
わからないのですが、基本をおろそかにして応用をやろうとするのは
お勧めできません。

ここからは私のワガママになりますが。
噛み砕いて解説すること自体はやぶさかではありませんが、掲示板で
それをやるのは結構な労力がかかるのです。できれば先輩などの
身近で(実際に話し合いながら)相談できる方に聞いてみるとか、本を
読んで自学自習してみるとか、そういった方法をお勧めしたいです。
引用返信 編集キー/
■15127 / inTopicNo.12)  Re[8]: テキストボックスの数値を変換して表示する
□投稿者/ くま子 (6回)-(2008/03/05(Wed) 08:57:05)
こちらで教えてもらった事を先輩に聞きながら
やったら無事解決することができました。
助かりました。
本当にありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -