首页 > 解决方案 > 我想限制用户在运行时通过正则表达式输入除(我的情况:“T+1”)以外的文本

问题描述

要求是限制用户在字段本身中输入错误字符,而不是抛出任何错误或清除无效输入。

我尝试了以下正则表达式:

(^[T|t]{1}[-|+][1-9][0-9]$)|(^[T|t]{1}[-|+][1-9]$)|^[T|t]$

基本上我的代码中发生的事情是,我有一个文本框和组合框。如果用户输入 T + 范围 (2,99) 内的任何值,那么我必须禁用组合框。但它只适用于文本框的丢失焦点,我希望在用户开始输入后同时调用验证逻辑和禁用逻辑。

我有一个工作流活动,加载时显示 T+1 值。如果我在 2 到 99 之间添加值,那么它会禁用组合框。但是当我清除文本框中的整个字段并且当我输入 T 时它显示 T ,现在当我输入 + 符号时整个文本字段被清除。这是因为我已经为它添加了逻辑,就好像文本框中的字符串无效(不是根据正则表达式)然后清除该字段。

我现在想要的是允许用户输入但限制他输入重复。同时应该评估来自文本框的字符串并且应该禁用组合框。

请帮忙。需要认真的帮助。

标签: c#regexwpf

解决方案


据我所知,您的问题实际上很简单;

“但它只适用于文本框的丢失焦点,我希望在用户开始输入后同时调用验证逻辑和禁用逻辑”

只需使用 PreviewTextInput 事件。

https://msdn.microsoft.com/en-us/library/system.windows.uielement.previewtextinput(v=vs.110).aspx

我故意忽略了一个事实,那里有不止一个问题:P


推荐阅读