0

私が取り組んでいる小さな練習プログラムについて質問があります。私はC#の経験がほとんどなく、VisualBasicの経験も少しあります。私が抱えている問題は、テキストボックスに数字のみを許可することと関係があります。私は別のプログラムでそうすることに成功しましたが、何らかの理由でそれは比較的同じコードで動作していません。コードは次のとおりです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnCalculate_Click(object sender, EventArgs e)
        {
            Double TextBoxValue;
            TextBoxValue = Convert.ToDouble(txtMinutes.Text);
            TextBoxValue = Double.Parse(txtMinutes.Text);

            {
                Double Answer;
                if (TextBoxValue > 59.99)
                {
                    Answer = TextBoxValue / 60;
                }
                else
                {
                    Answer = 0;
                }
                {
                    lblAnswer.Text = Answer.ToString();
                }
            }

        }

        private void txtHours_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (char.IsNumber (e.KeyChar) && Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }
    }
} 

私のコードに他のエラーがあり、ここにいる誰もが私を修正できる場合は、それもありがたいです。前もって感謝します。

4

3 に答える 3

4

チェックが逆になっています。あなたのコードは、新しい文字が数字であり、それが制御文字である場合、入力をキャンセルすることです。

if (!char.IsNumber(e.KeyChar) && !Char.IsControl(e.KeyChar))
    e.Handled = true;
于 2013-01-14T01:10:00.470 に答える
1
        private void txtHours_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar)
                && !char.IsDigit(e.KeyChar)
                && e.KeyChar != '.')
                e.Handled = true;

            // only allow one decimal point
            if (e.KeyChar == '.'
                && (txtHours).Text.IndexOf('.') > -1)
                e.Handled = true;
        }
于 2013-01-14T01:14:48.633 に答える
1

あなたの論理は正しくありません。「押されたキーが数字と制御文字の場合..それなら私はそれを処理しました」と書かれています。あなたが欲しいのは「押されたキーが数字でないなら、私はそれを処理した」です。

if (!char.IsNumber(e.KeyChar)) {
    // ...
于 2013-01-14T01:10:30.880 に答える