国产97色在线|亚洲-欧美人妻另类制服丝袜-欧美人成国产91视频-殷素素一女战二夫|www.ycjrc.net

Winform TextBox (文本框) 控件只能輸入數值, 限制輸入兩位小數

發布時間:2020-11-30 15:48 作者:獨孤劍 閱讀:1163

Winform TextBox (文本框) 控件只能輸入數值, 限制輸入兩位小數

using System;
using System.Windows.Forms;

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

    /// <summary>
    /// 文本框 - 只能輸入數值, 限制輸入兩位小數
    /// 禁止粘貼
    /// </summary>
    public class TextBoxExFloat : TextBox
    {
        /// <summary>
        /// 構造函數
        /// </summary>
        public TextBoxExFloat()
        {
        }

        #region 禁止粘貼
        /// <summary>
        /// 重寫基類的WndProc方法
        /// </summary>
        /// <param name="m"></param>
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x0302)            // 0x0302是粘貼消息
            {
                m.Result = IntPtr.Zero;     // 攔截此消息
                return;
            }
            base.WndProc(ref m);            // 若此消息不是粘貼消息,則交給其基類去處理
        }
        #endregion

        #region 重寫方法
        /// <summary>
        /// 重寫方法
        /// 可以輸入小數
        /// </summary>
        /// <param name="e"></param>
        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            base.OnKeyPress(e);
            if (e.KeyChar != 8)// 允許輸入退格鍵
            {
                // 最多8位數金額
                if (this.Text.Length == 8) { e.Handled = true; }

                // 允許輸入數字、小數點  
                if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != (char)('.'))
                {
                    e.Handled = true;
                }

                // 小數點只能輸入一次  
                if (e.KeyChar == (char)('.') && this.Text.IndexOf('.') != -1)
                {
                    e.Handled = true;
                }

                // 第一位不能為小數點  
                if (e.KeyChar == (char)('.') && this.Text == "")
                {
                    e.Handled = true;
                }

                // 第一位是0,第二位必須為小數點  
                if (e.KeyChar != (char)('.') && this.Text == "0")
                {
                    e.Handled = true;
                }

                // 有小數只保留2位
                if (this.Text.IndexOf('.') != -1)
                {
                    if (this.Text.Length - this.Text.IndexOf('.') - 1 == 2)
                    {
                        e.Handled = true;
                    }
                }
            }
        }
        #endregion

    }
}


拖拽“TextBoxExFloat”的自定義控件到窗體


微信打賞, 微信掃一掃

支付寶打賞, 支付寶掃一掃

如果文章對您有幫助,歡迎給作者打賞

作者最新文章
開發過程中解決360兼容模式瀏覽器的方法
云南象群向西南方向遷移,云南離群獨象距離象群約12公里
吉林做網站最低價格,吉林企業網站建設價格低至500元起
守象人直擊云南象群最新動向
網站影響百度蜘蛛抓取量的因素有哪些?為什么我的網站Baidu蜘蛛來的次數少?
企業名片
在線客服