久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

[.net自定義控件]TextBox控件重寫 之NumTextBox

 orion360doc 2010-12-30

TextBox控件重寫 之NumTextBox,,主要實現(xiàn)的功能是,,只允許輸入數(shù)字,,或String,Numeric,Currency,Decimal,Float,Double,Short,Int,Long

等加了一個屬性InputType可以設(shè)置其,,還可以自己進(jìn)一步擴(kuò)展,因為是開源的,。

        public enum NumTextBoxType
        {
            String,//是這個的時候,,什么都不處理,跟正常TextBox一樣
            Numeric,//只要是數(shù)字就行
            Currency,
            Decimal,
            Float,
            Double,
            Short,
            Int,
            Long
        }

主要代碼:

  1. using System;   
  2. using System.Windows.Forms;   
  3. using System.ComponentModel;   
  4. using System.Text.RegularExpressions;   
  5.   
  6. namespace YongFa365.Controls.NumTextBox   
  7. {   
  8.     public class NumTextBox : TextBox   
  9.     {   
  10.         private NumTextBoxType inputType = NumTextBoxType.Numeric;   
  11.         public enum NumTextBoxType   
  12.         {   
  13.             String,//是這個的時候,,什么都不處理,,跟正常TextBox一樣   
  14.             Numeric,//只要是數(shù)字就行   
  15.             Currency,   
  16.             Decimal,   
  17.             Float,   
  18.             Double,   
  19.             Short,   
  20.             Int,   
  21.             Long   
  22.         }   
  23.   
  24.         public NumTextBox()   
  25.         {   
  26.             this.ContextMenu = new ContextMenu();   
  27.         }   
  28.   
  29.         [   
  30.         Category("專用設(shè)置"),   
  31.         DefaultValue(NumTextBoxType.Numeric),   
  32.         Description("設(shè)置允許類型:\nString跟普通TextBox功能一樣\nNumeric只要是數(shù)字就可以")   
  33.         ]   
  34.         public NumTextBoxType InputType   
  35.         {   
  36.             get { return inputType; }   
  37.             set { inputType = value; }   
  38.         }   
  39.   
  40.         public override string Text   
  41.         {   
  42.             get { return base.Text; }   
  43.             set  
  44.             {   
  45.                 if (IsValid(value, true))   
  46.                 {   
  47.                     base.Text = value;   
  48.                 }   
  49.             }   
  50.         }   
  51.   
  52.         private bool IsValid(string val, bool use)   
  53.         {   
  54.             bool ret = true;   
  55.   
  56.             if (string.IsNullOrEmpty(val))   
  57.             {   
  58.                 return ret;   
  59.             }   
  60.   
  61.             if (use)   
  62.             {   
  63.                 if (val.Equals("-") && inputType != NumTextBoxType.Numeric)   
  64.                 {   
  65.                     return ret;   
  66.                 }   
  67.             }   
  68.   
  69.   
  70.             try  
  71.             {   
  72.                 switch (inputType)   
  73.                 {   
  74.                     case NumTextBoxType.String:   
  75.                         break;   
  76.                     case NumTextBoxType.Numeric:   
  77.                         if (!Regex.IsMatch(val, @"^\d*$"))   
  78.                         {   
  79.                             ret = false;   
  80.                         }   
  81.                         break;   
  82.                     case NumTextBoxType.Currency:   
  83.                         decimal dec = decimal.Parse(val);   
  84.                         int pos = val.IndexOf(".");   
  85.                         if (pos != -1)   
  86.                         {   
  87.                             ret = val.Substring(pos).Length <= 3;   
  88.                         }   
  89.                         break;   
  90.                     case NumTextBoxType.Float:   
  91.                         float flt = float.Parse(val);   
  92.                         break;   
  93.                     case NumTextBoxType.Double:   
  94.                         double dbl = double.Parse(val);   
  95.                         break;   
  96.                     case NumTextBoxType.Decimal:   
  97.                         decimal dec2 = decimal.Parse(val);   
  98.                         break;   
  99.                     case NumTextBoxType.Short:   
  100.                         short s = short.Parse(val);   
  101.                         break;   
  102.                     case NumTextBoxType.Int:   
  103.                         int i = int.Parse(val);   
  104.                         break;   
  105.                     case NumTextBoxType.Long:   
  106.                         long l = long.Parse(val);   
  107.                         break;   
  108.                     default:   
  109.                         throw new ApplicationException();   
  110.                 }   
  111.             }   
  112.             catch  
  113.             {   
  114.                 ret = false;   
  115.             }   
  116.             return ret;   
  117.         }   
  118.   
  119.         protected override bool ProcessCmdKey(ref Message msg, Keys keyData)   
  120.         {   
  121.   
  122.             if (keyData == (Keys)Shortcut.CtrlV || keyData == (Keys)Shortcut.ShiftIns)   
  123.             {   
  124.                 IDataObject iData = Clipboard.GetDataObject();   
  125.   
  126.   
  127.                 string newText;   
  128.                 newText = base.Text.Substring(0, base.SelectionStart)   
  129.                     + (string)iData.GetData(DataFormats.Text)   
  130.                     + base.Text.Substring(base.SelectionStart + base.SelectionLength);   
  131.   
  132.                 if (!IsValid(newText, true))   
  133.                 {   
  134.                     return true;   
  135.                 }   
  136.             }   
  137.             return base.ProcessCmdKey(ref msg, keyData);   
  138.         }   
  139.   
  140.         protected override void OnLeave(EventArgs e)   
  141.         {   
  142.             if (!(inputType == NumTextBoxType.Numeric || inputType == NumTextBoxType.String))   
  143.             {   
  144.                 if (base.Text != "")   
  145.                 {   
  146.                     if (!IsValid(base.Text, false))   
  147.                     {   
  148.                         base.Text = "";   
  149.                     }   
  150.                     else if (Double.Parse(base.Text) == 0)   
  151.                     {   
  152.                         base.Text = "0";   
  153.                     }   
  154.                 }   
  155.   
  156.             }   
  157.             base.OnLeave(e);   
  158.   
  159.         }   
  160.   
  161.         protected override void OnKeyPress(KeyPressEventArgs e)   
  162.         {   
  163.             if (inputType != NumTextBoxType.String)   
  164.             {   
  165.                 char c = e.KeyChar;   
  166.                 if (!Char.IsControl(c))   
  167.                 {   
  168.                     if (c.ToString() == " ")   
  169.                     {   
  170.                         e.Handled = true;   
  171.                         return;   
  172.                     }   
  173.   
  174.                     string newText = base.Text.Substring(0, base.SelectionStart)   
  175.                         + c.ToString() + base.Text.Substring(base.SelectionStart + base.SelectionLength);   
  176.   
  177.                     if (!IsValid(newText, true))   
  178.                     {   
  179.                         e.Handled = true;   
  180.                     }   
  181.                 }   
  182.             }   
  183.             base.OnKeyPress(e);   
  184.         }   
  185.     }   

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多