今天做了个小控件,主要继承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>
此控件使用了抽象工厂来实现,提供了方法来检查按键值和输入数据是否复合要求。代码如下:
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>