TextBox 扩展,能够输入数字,浮点数或者原来的功能

这篇博客介绍了如何扩展System.Windows.Forms.TextBox控件,使其既能保持原有的功能,又能限制用户只能输入整数或浮点数。作者通过创建一个抽象工厂模式的实现,提供不同类型的IProcessCmdKey接口子类来处理不同类型的输入检查,包括Int32和Decimal。此外,还定义了一个工厂方法用于根据输入类型创建相应的处理类。
摘要由CSDN通过智能技术生成
   今天做了个小控件,主要继承System.Windows.Forms.TextBox来实现TextBox中只能输入数字的问题,但是有不想仅实现这种功能,于是对TextBox进行扩展。让其可以实现TextBox原有功能,还可以输入整形,和浮点型数据。
   此控件使用了抽象工厂来实现,提供了方法来检查按键值和输入数据是否复合要求。代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;

namespace Ctrl
{
    #region Input Type
    /// <summary>
    /// 输入类型 TextBoxExtend 中输入的类型
    /// </summary>
    public enum InputType
    {
        // 原始输入模式
        None = 1,
        // 输入为Int类型
        Int = 2,
        // 输入为Decimal类型
        Decimal = 3
    }
    #endregion

    #region 处理ProcessCmdKey的方法接口
    /// <summary>
    /// 处理ProcessCmdKey的方法接口
    /// </summary>
    public abstract class IProcessCmdKey
    {
        #region Property
        /// <summary>
        /// 显示的Text值
        /// </summary>
        private string _Text;
        /// <summary>
        /// 显示的Text值
        /// </summary>
        public string Text
        {
            get { return _Text; }
            set { _Text = value; }
        }
        #endregion

        /// <summary>
        /// Checks the text.
        /// </summary>
        /// <param name="Text">The text.</param>
        /// <returns></returns>
        public abstract bool CheckText(string Text);

        /// <summary>
        /// Processes the CMD key.
        /// </summary>
        /// <param name="msg">The MSG.</param>
        /// <param name="keyData">The key data.</param>
        /// <returns></returns>
        public abstract bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData);
    }
    #endregion

    #region 不处理任何按键的类
    /// <summary>
    /// 不处理任何按键的类
    /// </summary>
    public class ProcessCmdKeyNone : IProcessCmdKey
    {
        #region CheckText
        /// <summary>
        /// Checks the text.
        /// </summary>
        /// <param name="Text">The text.</param>
        /// <returns></returns>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值