gpt4 book ai didi

c# - MaskedTextBox强制使用大写字符

转载 作者:行者123 更新时间:2023-12-03 10:26:26 32 4
gpt4 key购买 nike

我正在使用Telerik的RadMaskedTextBox,并且尝试创建一个 mask ,使其遵循加拿大邮政编码模板。

模板如下所示字母编号字母编号字母编号

邮政编码示例T4R1U8
目前,我的 mask 是Mask="L#L #L#",但这允许同时使用大写和小写字母。我正在尝试使用它,以便可以输入大写字母并可以输入小写字母,但是小写字母会立即变为大写。

我已经尝试了两个解决方案,它们非常接近,但还不是最终解决方案。

第一个是在 View 模型方面解决这个问题

public string PostalCode
{
get {return postalCode;}
set
{
postalCode = value;
postalCode = postalCode.ToUpper();
OnPropertyChanged("PostalCode");
}
}

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

我采用的第二种方法效果很好,但是不允许我输入小写字符。我最终使用了CustomToken。 “*”是我的自定义 token 字符,因此我的新掩码是 Mask="*#* #*#"
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
}

任何提示将非常感谢。

最佳答案

这个here也有类似的问题。

解决方案是使用SelectionStart在最后设置插入符,例如:

Dispatcher.BeginInvoke(() =>
{
if (txtPOCode.MaskedText != null)
{
txtPOCode.MaskedText = txtPOCode.MaskedText.ToUpper();
txtPOCode.SelectionStart = txtPOCode.MaskedText.Length;
txtPOCode.Focus();
}
});

关于c# - MaskedTextBox强制使用大写字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43280340/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com