投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/9/5 13:51:11
> 小数点がクリックされたタイミングを起点にし、
> 小数点を2回クリックされた場合に対して処理をする
> というのがいいかと思い色々試しましたがうまくいきません。

現状通り、TextBox1.Text に書き込んでおけば、
 If TextBox1.Text.Contains(".") Then
で、"." の有無を判断することができます。


あるいは既に小数点が打たれたかどうかを管理するための
Boolean 型のフィールド変数を作るということもできます。

[.] が押された場合は、このフィールドを True に変更します。
[AC]、[C]、[CE]、[=]、[+]、[-]、[*]、[/] が押された場合は、このフィールドを False にリセットします。
[0]~[9] などの場合は、このフィールドを書き換えません。

もしくは Boolean ではなく Integer で保持しておき、
何桁目に小数点記号があるのかを管理する…という実装にするケースもあります。



こうした特殊対応が必要なのは小数点記号に限りませんね。

たとえば、数値が 0 だったときに、[0] を押しても "00" や "000" にはなりません。
しかし、小数点記号を打った後だと、"0.0" や "0.00" と表示されます。


あるいはマイナス記号 [+/-] 。
これは数字の先頭に "-" の文字を付けたり外したりする目的がありますが、
現在の値が "0" だった場合は通常無視されますね。

※Double 型では、+0 と -0 の内部値は異なるのですが、値としては同一視されます。


その他、桁数上限を超えて数字キーが押された場合に無視する処理とか、
四則演算子を複数回入力された場合の動作とか、電卓を作る場合は
色々と考えるべき点が多いですね。