質問: 取得またはを示す値を設定するかどうか、 KeyPress イベントが処理する。 Trueと入れると、イベントをキャンセルする。 } } ```
回答: 小数点フラグ`bolPoint`を追加してみた。 Digitsの値は不明だったから、仮で1を入れておいた。 こんな感じでいいのかな? ``` private bool bolPoint = false; // 小数点フラグ /// /// 身長のテキストボックス入力時 /// private void textHeight_KeyPress(object sender, KeyPressEventArgs e) { //入力処理 decimal_process(e); //小数処理 bool flag; flag = InputControl(textHeight, e); if (flag) { // 戻り値を使った処理 } } /// /// 入力処理 /// private bool InputControl(TextBox txt, KeyPressEventArgs e) { if (bolPoint == false) return false; // 小数点が無ければ抜ける //小数点以下一桁のみ入力可能 string entry = txt.Text; string left = (entry.Substring(0, txt.SelectionStart)); // SelextionStart 取得または現在の選択範囲の最初の文字インデックスを設定します。 string right = (entry.Substring(txt.SelectionStart)); // Substring 文字列からある指定の文字列を抜き出す (○, から ○まで) 一つならそこから最後までの文字列を取得する string inputtext = (left + e.KeyChar + right); string possible = txt.Text; string[] conversion = possible.Split('.'); //ここで(.)で整数と少数を分ける。 int Digits = 1; // 仮 //小数点が入力済みである場合 if (possible.Contains(".")) //Contains Stringクラスには、文字列が含まれているかどうかを調べるための専用のメソッドであるContains { if (conversion[Digits].Length == 1 && e.KeyChar != '\b') //小数点が二桁の場合1桁に制御する { e.Handled = true; } //入力キーが「.」の場合、キャンセル if (e.KeyChar == '.') { e.Handled = true; } } return true; } /// /// 入力処理 /// public void decimal_process(KeyPressEventArgs e) { //バックスペースはどのような状態であれ通す if (e.KeyChar == '\b') { e.Handled = false; } ///・「0~9」の数字、「.」のみ入力可能 ///・バックスペースはどのような状態であれ通す // 数値と小数点とバックスペース以外の入力は不可 else if ((e.KeyChar < '0' || e.KeyChar > '9') && e.KeyChar != '.') { e.Handled = true; //.Handled = 取得またはを示す値を設定するかどうか、 KeyPress イベントが処理する。 Trueと入れると、イベントをキャンセルする。 } if (e.KeyChar == '.') bolPoint = true; // 小数点フラグをオン } ```