首页

源码搜藏网

首页 > 开发教程 > .net教程 >

HandlEdInput - 用于TextBox,RichTextBox和ComboBox的功能强大且可高度自定义的输入处理程序

创建时间:2019-07-21 18:34  

处理并验证TextBox,RichTextBox和ComboBox中的输入键入和按键,显示自定义气球提示消息
HandlEdInput - 用于TextBox,RichTextBox和ComboBox的功能强大且可高度自定义的输入处理程序

介绍

HandlEdInput处理和验证输入键入和按下的键TextBoxRichTextBoxComboBox显示自定义气球提示消息。

由于其使用简单,加上高度可定制的属性,不仅可以阻止输入输入和按键,还可以通过使用正则表达式进行ComboBox验证还可以验证输入的输入是否在项目列表中,包括更多功能。

这是它可以做什么的列表。

处理(控制输入)

消息(在每个检测到的操作中显示自定义气球提示)


最好的部分是所有这些设置都可以以非常简单的方式组合。

例如,假设您要捕获电话号码。

  1. 您可以轻松地开始阻止数字以外的任何内容。
  2. 然后你可以包括字符:+() -
  3. 为了验证输入,您可以包含正则表达式模式。
  4. 您可以设置为每个字符允许一个间距。
  5. 最后,您可以在存在正则表达式不匹配模式或匹配模式时自定义气球提示。

背景

我开始这个供个人使用,我需要一些强大的输入类型处理程序,用于我正在处理的项目,而不是仅为输入阻塞编写必要的代码。所以我认为有一个通用,灵活和完整的解决方案来限制和控制输入类型是有用的,这就是这个项目诞生的方式。起初,它是一个非常简单的代码,并满足了我当时的需求。但是几天之后,我决定继续我的工作,考虑可以纳入的新的有用的想法,并在几周的工作之后......现在它已经准备好被分享了。

预览

HandlEdInput - 用于TextBox,RichTextBox和ComboBox的功能强大且可高度自定义的输入处理程序

HandlEdInput - 用于TextBox,RichTextBox和ComboBox的功能强大且可高度自定义的输入处理程序

HandlEdInput - 用于TextBox,RichTextBox和ComboBox的功能强大且可高度自定义的输入处理程序

使用代码

首先,你必须通过TextBoxRichTextBoxComboBox对类实例声明控制。

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:

  1. 阻止任何非字母数字字符
  2. 仅包含以下字符:_ -
  3. 限制任何可能的空白输入
  4. 为气球提示焦点消息设置消息标题及其内容
  5. 设置自定义图标,邮件标题和气球提示无效邮件的内容
  6. 将包含的字符消息可见性设置为隐藏
  7. 将气球提示超时延长至5秒
  8. 最后确认处理控件

(注意:设置顺序无关紧要,只要它以类实例声明开头并使用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*DC{0,4}LX{0,4}VI{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:

  1. 启用阻塞模式,这意味着它将反转处理并开始禁用所有字符类型(字母,数字和非字母数字)
  2. 仅允许使用字母字符
  3. 限制任何可能的空白输入
  4. 将正则表达式模式设置为仅匹配有效的罗马数字
  5. 表示正则表达式的行为不区分大小写(这也可以在正则表达式模式中设置,但在这种情况下的目的是显示正则表达式选项属性)
  6. 禁用控件内的任何快捷键组合(Ctrl + ACtr + CCtrl + V ..),同时禁用其上下文菜单
  7. 设置气球提示焦点消息的内容
  8. 设置气球提示正则表达式不匹配消息的内容
  9. 设置气球提示正则表达式匹配消息的内容
  10. 当检测到除alpha之外的字符时,隐藏限制键气球提示消息的可见性
  11. 最后确认处理控件

现在让我们看一个简单的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:

  1. 启用阻止模式,禁用所有字符输入
  2. 仅允许数字输入
  3. 启用ComboBox验证器,这意味着它将在项目列表中查找输入的输入并进行验证
  4. 设置气球提示焦点消息的标题
  5. 设置气球提示焦点消息的内容
  6. 设置气球提示无效输入消息的内容(即,尝试输入字母字符)
  7. 设置ComboBox气球提示无效输入消息的内容(即,在有效数字字符上但不在ComboBox项目列表中)
  8. 设置ComboBox气球提示有效输入消息的内容
  9. 最后确认处理控件

消息参数

您可以为气球提示消息使用一组参数。
这些参数将实时替换为一些有用的信息,例如,为了让用户在第一时间知道哪个是输入控件的有效输入,您将在焦点消息中使用如下内容:“输入可以仅包含 {tokens} ,包括以下字符:\ n {include_chars}。“ 
可以使用的参数如下:

建议

添加了可选的自定义控件。这些自定义控件现在可以通过支持 两种方式的文本Drop和  Paste处理(键盘快捷键和上下文菜单)来完全处理所有输入尝试  
对于完整的输入处理,建议使用这些自定义控件。
您可以在Designer工具箱中找到它们。将它们添加到用户界面后,您可以自定义其行为以满足您的需求。

积分

非常感谢Chris和Ivan Petrov提供的代码,使我能够使这个项目成长,代码中的更多细节。

历史

上一篇:使用C#调试Windows服务模板项目
下一篇:没有了

相关内容

热门推荐