仕事でVB.NETを扱うことになったので勉強しており、その課題として電卓を作っています。
なんとか機能ごとにクラス分けをして動くものを作ることができたのですが、現在壁にぶち当たっています。
仕様として、3桁ごとにカンマ区切りを入れたいと思っています。
以前アドバイスをいただき、整数部と小数部で分割し.ToString("#,0")を使ってカンマを表示させたのですが、今度は小数点の「. 」が入力したときに表示されなくなってしまいました。
(そのあとの数字を入れると表示されます)
うまくカンマ区切りを入れつつ、入力時に「. 」も表示させたい場合どうしたらよいのでしょうか?
String型に変換していることが問題な気はしているのですが…よい方法があれば教えていただけないでしょうか。
###該当のソースコード
'ボタンクラス '1~9 Public Sub InsertNum(iNum As String) '入力されたのが数字だった場合 If DentakuForm.mBefore >= "0" And DentakuForm.mBefore <= "9" Or DentakuForm.mBefore = "." Then If DentakuForm.mDisplay <> "0" Then DentakuForm.mDisplay &= iNum Else DentakuForm.mDisplay = iNum End If Else DentakuForm.mDisplay = iNum End If DentakuForm.mBefore = iNum End Sub '0入力 Public Sub Insert0() If DentakuForm.mBefore >= "0" And DentakuForm.mBefore <= "9" Or DentakuForm.mBefore = "." Then If DentakuForm.mDisplay <> "0" Then DentakuForm.mDisplay &= "0" End If Else DentakuForm.mDisplay = "0" End If DentakuForm.mBefore = "0" End Sub '小数点入力 Public Sub InsertPoint() If DentakuForm.mPoint = False Then DentakuForm.mDisplay &= "." End If DentakuForm.mBefore = "." DentakuForm.mPoint = True End Sub '表示クラス Public Sub rDisplay() If Len(DentakuForm.mDisplay) < 12 Then Dim Seisu As Decimal = Fix(CType(DentakuForm.mDisplay, Decimal)) Dim Shosu As Decimal = CType(DentakuForm.mDisplay, Decimal) - Fix(CType(DentakuForm.mDisplay, Decimal)) Me.Text = Seisu.ToString("#,0") & (Shosu.ToString).Substring(1) '単純に Me.Text = DentakuForm.mDisplay とすると小数点は表示されます。 Else MsgBox("桁数オーバーです", 48, "警告メッセージ") Exit Sub End If End Sub
###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio 2012を使用しています。
そのほか回答に必要なソースなどございましたら補足しますのでご指摘お願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/18 01:22