zoukankan      html  css  js  c++  java
  • 将输入的字符串分2个字符添加空格并大写格式化

    /// <summary>
    /// 格式化输入文本框(只允许输入字母且每隔两个字符添加空格空位)
    /// </summary>
    public class FormatTextBox : RadTextBox
    {
    #region define、attribute

    /// <summary>
    /// 是否为退格键
    /// </summary>
    private bool IsEmptyKey = false;

    /// <summary>
    /// 枚举类型,False表示不转换,True表示转换为大写
    /// </summary>
    public enum ToUppers
    {
    False,
    True,
    }
    private ToUppers to_Upper;
    [DefaultValue(ToUppers.False)]
    public ToUppers To_Upper
    {
    get
    {
    return to_Upper;
    }
    set
    {
    to_Upper = value;
    }
    }

    #endregion

    #region verride event

    protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)
    {
    base.OnKeyPress(e);

    SetStandard(e);
    }

    /// <summary>
    /// 只允许输入字母和退格键
    /// </summary>
    /// <param name="e">键盘按键</param>
    private void SetStandard(System.Windows.Forms.KeyPressEventArgs e)
    {
    //只允许输入字母
    Regex regex = new Regex("^[a-zA-Z]");
    MatchCollection mc = regex.Matches(e.KeyChar.ToString());
    foreach (Match ma in mc)
    {
    e.Handled = false;
    if (e.KeyChar == '')
    {
    IsEmptyKey = true;
    }
    return;
    }

    e.Handled = true;
    }

    protected override void OnTextChanged(EventArgs e)
    {
    base.OnTextChanged(e);

    if (ToUppers.True.ToString() == To_Upper.ToString())
    {
    this.Text = this.Text.ToUpper();
    this.Select(Text.Length, 0);
    }
    }

    public override string Text
    {
    get
    {
    return base.Text;
    }
    set
    {
    //退格键
    if (IsEmptyKey)
    {
    base.Text = value;
    IsEmptyKey = false;
    return;
    }
    if (value.Length < 2)
    {
    base.Text = value;
    return;
    }

    StringBuilder sb = new StringBuilder();
    string content = value.Trim();
    content = content.Replace(" ", string.Empty);
    try
    {
    int length = content.Length / 2;
    int num = 2;
    if (content.Length > 0)
    {
    for (int i = 0; i < length; i++)
    {
    num = 2 * i;
    string tempStr = content.Substring(num, 2);
    sb.Append(tempStr);
    sb.Append(" ");
    }
    }
    //长度为奇数时追加最后一个字符
    int remainder = content.Length % 2;
    if (remainder == 1)
    {
    string tempStr = content.Substring(content.Length - 1, 1);
    sb.Append(tempStr);
    }
    }
    catch
    {
    return;
    }

    base.Text = sb.ToString().ToUpper();
    return;
    }
    }

    #endregion

    }

     

  • 相关阅读:
    如何判断 DataRow 中是否存在某列????
    jquery操作table中的tr,td的方法双击dblclick attr parent id原创
    oracle 取当天日期减一天 应该如何写
    走出“搜索引擎营销”三个误区
    解决方案是什么
    强制远程连接 命令
    ORACLE 异常错误处理
    HttpClient是否有默认并发数限制?
    多线程下载程序的功能需求
    STL线程库简介
  • 原文地址:https://www.cnblogs.com/YYkun/p/5663170.html
Copyright © 2011-2022 走看看