首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MaskedTextBox强制执行UpperCase字符

MaskedTextBox强制执行UpperCase字符
EN

Stack Overflow用户
提问于 2017-04-07 14:13:37
回答 5查看 4.7K关注 0票数 1

我正在使用Telerik的RadMaskedTextBox,我试图创建一个掩码,这样它将遵循加拿大的邮政编码模板。

模板如下所示:字母号、字母号、字母号

示例邮政编码T4R1U8

目前,我的面具是Mask="L#L #L#",但这允许大写和小写字母。我试着用它,这样大写字母可以被输入,小写可以被输入,但是小写会立即变成上面的。

我尝试过两种解决方案,它们非常接近,但并不完全是最终的解决方案。

第一个是在视图模型端解决这个问题。

代码语言:javascript
复制
public string PostalCode
{
    get {return postalCode;}
    set
    {
        postalCode = value;
        postalCode = postalCode.ToUpper();
        OnPropertyChanged("PostalCode");
    }
}

这种方法,值将更改为上游,但类型索引移动到MaskTextBox的前面,而不是始终保留在键入的字符之后。

我采用的第二种方法效果很好,但不允许我输入小写字符。最后我使用了一个CustomToken。'*‘是我的自定义令牌字符,所以我的新掩码是Mask="*#* #*#"

代码语言:javascript
复制
public class CustomToken : ITokenValidationRule
{
    #region ITokenValidationRule Members

    public bool IsRequired
    {
        get { return false; }
    }

    public bool IsValid(char ch)
    {
        return ValidChars.Contains(ch);
    }

    public char Token
    {
        get { return '*'; }
    }

    public TokenTypes Type
    {
        get { return TokenTypes.AlphaNumeric; }
    }

    private string myValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    public string ValidChars
    {
        get { return myValidChars; }
    }

    #endregion
}

任何提示都将不胜感激。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-04-18 02:04:41

还有一个类似于这个here的问题。

解决方案是使用SelectionStart在最后设置卡雷特,例如:

代码语言:javascript
复制
Dispatcher.BeginInvoke(() =>
{
    if (txtPOCode.MaskedText != null)
    {
        txtPOCode.MaskedText = txtPOCode.MaskedText.ToUpper();
        txtPOCode.SelectionStart = txtPOCode.MaskedText.Length;
        txtPOCode.Focus();
    }
});
票数 1
EN

Stack Overflow用户

发布于 2021-01-12 16:40:54

若要在MaskedTextBox控件中强制执行大写字符,请将">“字符添加到掩码字符串的开头。

示例:对于CD键输入掩码,其中CD键将有5组由4个字母/数字组成的组,由破折号分隔,您希望将其全部大写,然后将掩码设置为:“>AAAA”。

在运行时,前面的">“不会出现在MaskedTextBox中的占位符文本中。

文本框只显示这样的下划线和破折号:____ - ____ - ____ - ____ - ____。

输入的所有字符将转换为大写,并且只允许输入字母/数字。

https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.maskedtextbox.mask?view=net-5.0

票数 1
EN

Stack Overflow用户

发布于 2017-04-24 05:02:49

我不知道你想在这里完成什么。

如果您想在字母上键入大写字母,那么您是否尝试将字体设置为字符?

TextBox1.字符集= CharacterCasing.Upper;

或将其设置在窗体上的属性上,这可能是将其放置在键按事件后面所必需的。

或在xaml中的元素中将其设置为“上级”。

代码语言:javascript
复制
<TextBox CharacterCasing="Upper"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43280340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档