處理並驗證TextBox,RichTextBox和ComboBox中的輸入鍵入和按鍵

2020-12-16 源碼搜藏

處理並驗證TextBox,RichTextBox和ComboBox中的輸入鍵入和按鍵,顯示自定義氣球提示消息

介紹

HandlEdInput

處理和驗證輸入鍵入和按下的鍵

TextBox

RichTextBox

ComboBox

顯示自定義氣球提示消息。

由於其使用簡單,加上高度可定製的屬性,不僅可以阻止輸入輸入和按鍵,還可以通過使用正則表達式進行

ComboBox

驗證,還可以驗證輸入的輸入是否在項目列表中,包括更多功能。

這是它可以做什麼的列表。

處理(控制輸入)

從輸入輸入中阻止alpha從輸入輸入中阻止數字阻止輸入輸入中的非字母數字阻止一個,部分或全部以上僅允許特定字符,並拒絕輸入鍵入的其餘字符僅拒絕特定字符並允許其餘輸入輸入阻止特定密鑰生效,即阻塞空格或退格鍵阻止控制項中的任何鍵盤快捷鍵以及上下文菜單每個字符僅允許一個間距在輸入的第一個開頭禁用間距通過正則表達式模式驗證輸入驗證ComboBox來自項目列表的輸入與否新! 處理粘貼命令新! 禁用文本選擇新!處理文字下降消息(在每個檢測到的操作中顯示自定義氣球提示)

設置消息標題設置消息的內容選擇信息,錯誤,警告或無圖標在內容消息中使用動態替換的參數,即「你按下{KeyData}更改消息預設的默認語言更改氣球提示的超時設置任何顯示的氣球提示案例的可見性隱藏所有氣球提示和更多...最好的部分是所有這些設置都可以以非常簡單的方式組合。

例如,假設您要捕獲電話號碼。

您可以輕鬆地開始阻止數字以外的任何內容。然後你可以包括字符:+() -為了驗證輸入,您可以包含正則表達式模式。您可以設置為每個字符允許一個間距。最後,您可以在存在正則表達式不匹配模式或匹配模式時自定義氣球提示。背景

我開始這個供個人使用,我需要一些強大的輸入類型處理程序,用於我正在處理的項目,而不是僅為輸入阻塞編寫必要的代碼。所以我認為有一個通用,靈活和完整的解決方案來限制和控制輸入類型是有用的,這就是這個項目誕生的方式。起初,它是一個非常簡單的代碼,並滿足了我當時的需求。但是幾天之後,我決定繼續我的工作,考慮可以納入的新的有用的想法,並在幾周的工作之後......現在它已經準備好被分享了。

預覽

使用代碼

首先,你必須通過

TextBox

RichTextBox

ComboBox

對類實例聲明控制。

Handled.Input T1 = new Handled.Input(textBox1);

提示:如果您希望多個控制項的行為相同,您也可以傳遞多個用逗號分隔的控制項)。

然後,您可以使用類的實例對象開始設置。

Handled.Input T1 = new Handled.Input(textBox1); T1.Handler.Settings.Set_BlockadeMode = true; T1.Handler.Handle_Numeric = true; T1.Handle();

給出的示例是關於如何僅允許數字作為輸入的簡單演示。

讓我們進入更高級的控制處理

Handled.Input T2 = new Handled.Input(textBox2); T2.Handler.Handle_NonAlphanumeric = true; T2.Handler.List_IncludeChars = new List<char> { '_', '-', '.' }; T2.Handler.List_RestrictKeys = new List<string> { "Space" }; T2.Message.OnFocus.Set_Title = "Please enter a username"; T2.Message.OnFocus.Set_Message = "Username can only contain {tokens} including the following characters:\n{include_chars}"; T2.Message.OnInvalidInput.Set_Icon = Handled.BalloonTip.ICON.ERROR; T2.Message.OnInvalidInput.Set_Title = "Invalid"; T2.Message.OnInvalidInput.Set_Message = "Enter a valid input."; T2.Message.OnIncludeChars.Set_Visible = false; T2.Message.Settings.Set_AllTimeouts = 5000; T2.Handle();

聲明類實例後,將控制項傳遞給handle:

阻止任何非字母數字字符僅包含以下字符:_ -限制任何可能的空白輸入為氣球提示焦點消息設置消息標題及其內容設置自定義圖標,郵件標題和氣球提示無效郵件的內容將包含的字符消息可見性設置為隱藏將氣球提示超時延長至5秒最後確認處理控制項(注意:設置順序無關緊要,只要它以類實例聲明開頭並使用

Handle()

方法完成)。

更高級的示例將包括正則表達式驗證

Handled.Input T3 = new Handled.Input(textBox3); T3.Handler.Settings.Set_BlockadeMode = true; T3.Handler.Handle_Alpha = true; T3.Handler.List_RestrictKeys = new List<string> { "Space" }; T3.Handler.Settings.Set_RegexMatchPattern = "^(?=[MDCLXVI])M*D?C{0,4}L?X{0,4}V?I{0,4}$"; T3.Handler.Settings.Set_RegexOptions = System.Text.RegularExpressions.RegexOptions.IgnoreCase; T3.Handler.Settings.Set_ShortcutsEnabled = false; T3.Message.OnFocus.Set_Message = "Enter a roman number."; T3.Message.OnRegexMismatch.Set_Message = "Type a valid roman number."; T3.Message.OnRegexMatch.Set_Message = "The roman number is valid."; T3.Message.OnRestrictKeys.Set_Visible = false; T3.Handle();

聲明類實例後,將控制項傳遞給handle:

啟用阻塞模式,這意味著它將反轉處理並開始禁用所有字符類型(字母,數字和非字母數字)僅允許使用字母字符限制任何可能的空白輸入將正則表達式模式設置為僅匹配有效的羅馬數字表示正則表達式的行為不區分大小寫(這也可以在正則表達式模式中設置,但在這種情況下的目的是顯示正則表達式選項屬性)禁用控制項內的任何快捷鍵組合(Ctrl + ACtr + CCtrl + V ..),同時禁用其上下文菜單設置氣球提示焦點消息的內容設置氣球提示正則表達式不匹配消息的內容設置氣球提示正則表達式匹配消息的內容當檢測到除alpha之外的字符時,隱藏限制鍵氣球提示消息的可見性最後確認處理控制項現在讓我們看一個簡單的ComboBox驗證示例

Handled.Input C1 = new Handled.Input(comboBox1); C1.Handler.Settings.Set_BlockadeMode = true; C1.Handler.Handle_Numeric = true; C1.Handler.Settings.Set_ComboBoxValidator = true; C1.Message.OnFocus.Set_Title = "Set Day"; C1.Message.OnFocus.Set_Message = "Please set the day here."; C1.Message.OnInvalidInput.Set_Message = "Set a valid day."; C1.Message.OnComboBoxInvalidInput.Set_Message = "Set a valid day of the month."; C1.Message.OnComboBoxValidInput.Set_Message = "The day is valid now."; C1.Handle();

聲明類實例後,將控制項傳遞給handle:

啟用阻止模式,禁用所有字符輸入僅允許數字輸入啟用ComboBox驗證器,這意味著它將在項目列表中查找輸入的輸入並進行驗證設置氣球提示焦點消息的標題設置氣球提示焦點消息的內容設置氣球提示無效輸入消息的內容(即,嘗試輸入字母字符)設置ComboBox氣球提示無效輸入消息的內容(即,在有效數字字符上但不在ComboBox項目列表中)設置ComboBox氣球提示有效輸入消息的內容最後確認處理控制項消息參數

您可以為氣球提示消息使用一組參數。這些參數將實時替換為一些有用的信息,例如,為了讓用戶在第一時間知道哪個是輸入控制項的有效輸入,您將在焦點消息中使用如下內容:「輸入可以僅包含 {tokens} ,包括以下字符:\ n {include_chars}。「 可以使用的參數如下:

{tokens} =顯示允許的令牌{KeyChar} =顯示按下的字符{KeyData} =顯示按下的鍵的名稱{exclude_chars} =顯示排除字符列表{include_chars} =顯示包含字符的列表{restrict_keys}=顯示限制鍵列表建議

添加了可選的自定義控制項。這些自定義控制項現在可以通過支持 兩種方式的文本

Drop

Paste

處理(鍵盤快捷鍵和上下文菜單)來完全處理所有輸入嘗試 。對於完整的輸入處理,建議使用這些自定義控制項。您可以在Designer工具箱中找到它們。將它們添加到用戶界面後,您可以自定義其行為以滿足您的需求。

積分

非常感謝Chris和Ivan Petrov提供的代碼,使我能夠使這個項目成長,代碼中的更多細節。

歷史

2019年7月17日介紹文字 Drop上的驗證支持HandledTextBoxHandledRichTextBox HandledComboBox 控制!(需要Set_DropValidationOnCustomControls啟用「 」,這也會自動設置「 AllowDrop」/「 EnableAutoDragDrop」屬性)RTF 在text Paste/ Drop on 時添加了格式支持 , HandledRichTextBox 並且不需要重新格式化空格/分隔線重命名屬性。(「 Is_RegexValidMatch」/「 Is_ComboBoxInputOnList」)2019年7月1日修復了小錯誤(有一種特定的方法允許在單個間距處理上粘貼另一個空格旁邊的空格)一些屬性中的次要camelcase命名更改06/29/2019 - HandlEdInput變得更加強大!添加了支持Paste命令處理的自定義控性能改進!現在,更容易更改默認的氣球提示消息語言,並在Handled.Input類中添加自定義語言。現在沒有必要也將「 Control」/「 Shift」變體(即「 SpaceControl」,「 SpaceShift」)傳遞給限制鍵列表,以避免任何可能的方式繞過受限制的鍵。相反,只需傳遞正常情況(即「 Space」)。除了限制Space限制鍵列表上的「 」,現在您還可以在排除列表中添加空白字符以避免間距。為所有類型的氣球提示消息添加了單獨的超時屬性(可以全局設置消息設置的所有超時)在焦點氣球提示上,消息現在僅在輸入為空時可見(仍然可以通過按「 F1」 隨時手動顯示它)添加「 Set_ContextMenuOnCustomControls」以定義是否設置上下文菜單HandledTextBoxHandledRichTextBox HandledComboBox。(默認值:True添加了「 Set_ContextMenuShortcutsOnCustomControls」以定義是否將命令快捷方式設置為可見HandledTextBoxHandledRichTextBox以及HandledComboBox 上下文菜單。(默認值:True添加「 Handle_TextSelectionOnCustomTextBox」以定義是否可以選擇HandledTextBox 文本(自動添加文本選擇鍵盤快捷鍵以限制鍵列表)添加「 Handle_TextSelectionOnCustomRichTextBox」以定義是否可以選擇HandledRichTextBox 文本(自動添加文本選擇鍵盤快捷鍵以限制鍵列表)添加「 IsRegexValidMatch」以編程方式查詢正則表達式模式是否匹配!添加「 IsComboBoxInputOnList」以編程方式查詢當前輸入是否列在ComboBox列表中!輸入無效時禁用按鈕事件現在僅在相應的氣球提示無效消息可見時才適用當角色被刪除時,「 Handle_BeginSpace」和「 Handle_OneSingleSpacing」現在變得更加強大和智能!修復了在失去控制焦點時沒有隱藏氣球提示(即使在最小化窗口後氣球提示也保持可見)

相關焦點

  • 如何在 Mac 上鍵入重音符號、表情符號和符號
    鍵入表情符號和其他符號在鍵入內容時,您可以使用字符顯示程序插入笑臉、花飾字符和其他符號。在文稿或信息中,點按要插入字符的位置。按 Control-Command-空格鍵。此時會顯示「字符顯示程序」彈出窗口:使用該窗口頂部的搜索欄,或者點按
  • VB基礎:掌握listbox和combobox控制項的應用【VB學習筆記2020課堂版04】
    簡介 INTRODUCTIONlistbox列表框控制項和combobox組合框控制項的用法類似,只是界面風格不同。
  • PHP 後端表單驗證和請求處理
    控制器的 contact 方法中,編寫表單數據獲取、驗證和保存代碼:public function contact(){    if ($this->request->getMethod() == 'GET') {        // 聯繫表單頁面        ...
  • 使用React和HTML5表單驗證API處理表單
    在本教程中,我們將看看如何使用React和HTML5的現代組合來處理表單提交和驗證。當我們在Web應用程式中討論用戶輸入時,我們經常首先想到HTML表單。Web表單從HTML的第一個版本開始就已經可用。顯然,該功能已於1991年推出,並在1995年以RFC 1866標準進行了標準化。
  • 蘋果iOS 13加入滑行鍵入功能 中文滑行輸入法怎麼用?
    7月7日,蘋果iOS 13加入滑行鍵入功能,這項功能早在很多第三方輸入法中就已經用上了,並且應用市場上也出現了一些較為熱門的專注滑行輸入的App,比如大名鼎鼎的Swype Keyboard等。
  • VB基礎:掌握listbox和combobox控制項的應用「VB學習筆記2020課堂版...
    簡介 INTRODUCTIONlistbox列表框控制項和combobox組合框控制項的用法類似,只是界面風格不同。課題04 列表框和自動輸入框的綜合使用授課:劉金玉回顧知識,符合以下要求任務練習學生管理功能模塊:1
  • 如何在Windows 10中的PC上鍵入kaomoji
    如何在我的電腦上輸入kaomoji?無論如何,什麼 是kaomoji?幸運的是,這兩個問題的答案都很簡單,並且可以在Windows 10中輕鬆訪問,從2019年5月更新開始。Windows中熟悉的表情符號鍵盤已經擴展到包括kaomoji和符號,並且將它們添加到Facebook,Twitter和其他社交媒體應用程式非常容易。 什麼是kaomoji?一個kaomoji只是一個更複雜的表情符號,表情符號的前身。你可能熟悉笑臉:)或者winky;)它們由熟悉的標點符號組合而成,形成一個表達。這是一個表情符號。
  • NUTs處理NMR譜圖技巧
    方法:按步驟4 的操作放大圖譜,擊滑鼠左鍵,出現大的十字形光標,將光標移動到目標峰位置後,在不放鬆情況下,按鍵「0」,出現對話框,在對話框內輸入相應的數值後,鍵入return.確認。6.         積分。完成基線矯正、位移標定後可進行積分。1)  鍵入ID,再鍵入B,點中滑鼠左鍵左右移動調整左側的基線水平,再點中右鍵重複操作調整右側的基線平。
  • 在Excel工作表中不用等號輸入算式
    你在Excel工作表中需要輸入大量的諸如「3+7+9」之類的算式,而且要求單元格中顯示其計算結果,於是你在每個算式前都得鍵入一個等號「=」,確實稍嫌麻煩。在此,告訴你一個方法,讓你可以省去這個等號的輸入過程,該方法是:   1.單擊「工具」菜單中的「選項」命令,系統彈出「選項」對話框。
  • NET開發-WebForm必填驗證對TextBox控制項的非空驗證及屬性的使用
    這一套ASP.NET驗證控制項可以滿足所有的標準數據驗證,並且ASP.NET驗證控制項是雙重驗證的:客戶端驗證(JavaScript實現)和伺服器端驗證(C#代碼實現),這樣就不怕客戶端腳本代碼攻擊了,保證了驗證數據的準確性。
  • 教你在Excel中不用等號輸入算式
    如果你在Excel工作表中需要輸入大量的諸如「3+7+9」之類的算式,而且要求單元格中顯示其計算結果,於是你在每個算式前都得鍵入一個等號「=」,確實稍嫌麻煩。在此,告訴你一個方法,讓你可以省去這個等號的輸入過程,該方法是:1.單擊「工具」菜單中的「選項」命令,系統彈出「選項」對話框。
  • 電腦輸入pīn yīn及相當好用的漢英/英漢詞典
    方法一:在網站輸入需要轉換為拼音的漢字,繼而複製粘貼至文本 (1)    這個方法是身邊朋友,尤其是新上任的中文教師最常用的方法。選擇 有聲調/無聲調;有文字/無文字;有間隔/無間隔;顯示多音/不顯示多音4. 點擊「查拼音 方法二:在網站輸入需要轉換為拼音的漢字,繼而複製粘貼至文本 (2)    與方法一相似,鍵入不同網址。
  • Excel設置數據驗證—即限制表格中輸入的內容
    的類型(即對單元格想要限制的「類型」或「格式)和「數據」的範圍,點擊「確定」按鈕即可設置成功。驗證條件選擇允許「整數」、「小數」、「日期」和「時間」後,還需要設置【數據】的範圍及臨界值,則Excel單元格中輸入的內容將受到該類型及臨界值的限制;
  • 按鍵與菜單在嵌入式系統中的設計與應用
    一、引言隨著微處理器的廣泛應用,越來越多的儀器採用智能化的操作方式,微控制器已經廣泛應用到各個領域中,為了使儀器的操作更簡便,人機界面更友好,在現代儀器電路中經常採用液晶與按鍵
  • 在Excel工作表單元格中手動輸入各種數據
    可以在一個Excel單元格中、同時在多個Excel單元格中活和在多個工作表 (工作表:在 Excel 中用於存儲和處理數據的主要文檔。也稱為電子表格。工作表由排列成行或列的單元格組成。工作表總是存儲在工作簿中。)
  • JEPG:ERP和催眠暗示揭示發聲和按鍵任務中STROOP效應的共同和特殊位置
    圖1不同版本Stroop任務中認知過程的語義表徵及交互作用(紅色箭頭、深灰色箭頭)。(a)按鍵Stroop任務中,幹擾和促進可能會出現在語義表徵或反應激活中。(b)發聲Stroop任務中,幹擾和促進會出現在語義、詞彙、單詞形式或發音水平。
  • 【答疑釋惑】getchar和getch
    getchar有一個int型的返回值.當程序調用getchar時。用戶輸入的字符被存放在鍵盤緩衝區中。直到用戶按回車為止(回車字符也放在緩衝區中)。當用戶鍵入回車之後,getchar才開始從stdio流中每次讀入一個字符。getchar函數的返回值是用戶輸入的第一個字符的ASCII碼,如出錯返回-1,且將用戶輸入的字符回顯到屏幕。如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,等待後續getchar調用讀取。
  • 一文帶你讀懂C/C++語言輸入輸出流與緩存區
    注意寬度輸出和精度輸出控制。緩衝區定義緩衝區是內存空間的一部分,也就是說在內存空間中預留了一定大小的存儲空間,這些存儲空間用來緩衝輸入或輸出的數據,這部分預留的空間就叫做緩衝區,根據其對應的是輸入設備還是輸出設備,分為輸入緩衝區和輸出緩衝區。
  • 在Excel工作表單元格中手動輸入各種數據(全文)
    可以在一個Excel單元格中、同時在多個Excel單元格中活和在多個工作表 (工作表:在 Excel 中用於存儲和處理數據的主要文檔。也稱為電子表格。工作表由排列成行或列的單元格組成。工作表總是存儲在工作簿中。)