0

C#.NET を使用して、Windows アプリケーション用のカスタム TextBox を作成しました。8.32 や 16.002 のような 10 進数 (浮動小数点数) を受け入れる必要があります。

以下のアルゴリズムを構築しました。純粋な数字のみを受け付けています。フロートも受け入れるようにする方法がわかりません。

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

namespace SmartTextBoxLib
{
    public partial class SmartTextBox : TextBox
    {
        public SmartTextBox()
        {
            InitializeComponent();
        }
        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
            base.OnKeyPress(e);
        }
    }
}
4

3 に答える 3

1

使用

System.Windows.Forms.NumericUpDown 

代わりに、これを行います。

于 2012-10-12T11:15:22.793 に答える
1

以下を使用できます。

if (!char.IsDigit(e.KeyChar) && e.KeyChar != '.')
    e.Handled = true;
base.OnKeyPress(e);

これにより、数字または.. ,それを使って小数を区切れば作れます。


または、次のようにすることもできます。

decimal value;
e.Handled = !decimal.TryParse((sender as TextBox).Text + e.KeyChar, out value);
base.OnKeyPress(e);
于 2012-10-12T11:29:20.757 に答える
0

Texbox コントロールの代わりに MaskedTextBox使用できます。

MaskedTextBox コントロールに Mask プロパティを定義しました。

maskedTextBoxInstance.Mask = "99.000";
于 2012-10-12T11:31:24.783 に答える