我正在使用Telerik的RadMaskedTextBox,我试图创建一个掩码,这样它将遵循加拿大的邮政编码模板。
模板如下所示:字母号、字母号、字母号
示例邮政编码T4R1U8
目前,我的面具是Mask="L#L #L#",但这允许大写和小写字母。我试着用它,这样大写字母可以被输入,小写可以被输入,但是小写会立即变成上面的。
我尝试过两种解决方案,它们非常接近,但并不完全是最终的解决方案。
第一个是在视图模型端解决这个问题。
public string PostalCode
{
get {return postalCode;}
set
{
postalCode = value;
postalCode = postalCode.ToUpper();
OnPropertyChanged("PostalCode");
}
}这种方法,值将更改为上游,但类型索引移动到MaskTextBox的前面,而不是始终保留在键入的字符之后。
我采用的第二种方法效果很好,但不允许我输入小写字符。最后我使用了一个CustomToken。'*‘是我的自定义令牌字符,所以我的新掩码是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
}任何提示都将不胜感激。
发布于 2017-04-18 02:04:41
还有一个类似于这个here的问题。
解决方案是使用SelectionStart在最后设置卡雷特,例如:
Dispatcher.BeginInvoke(() =>
{
if (txtPOCode.MaskedText != null)
{
txtPOCode.MaskedText = txtPOCode.MaskedText.ToUpper();
txtPOCode.SelectionStart = txtPOCode.MaskedText.Length;
txtPOCode.Focus();
}
});发布于 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
发布于 2017-04-24 05:02:49
我不知道你想在这里完成什么。
如果您想在字母上键入大写字母,那么您是否尝试将字体设置为字符?
TextBox1.字符集= CharacterCasing.Upper;
或将其设置在窗体上的属性上,这可能是将其放置在键按事件后面所必需的。
或在xaml中的元素中将其设置为“上级”。
<TextBox CharacterCasing="Upper"/>https://stackoverflow.com/questions/43280340
复制相似问题