我正在创建一个数字文本框,我希望像Excel一样将小键盘的小数点字符映射到CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator
。
有没有一种方法可以在TextBox
解释之前修改(替代)密钥?
我目前的策略是:
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyCode == Keys.Decimal)
{
e.Handled = true;
e.SuppressKeyPress = true;
int selectionStart = SelectionStart;
Text = String.Concat(
Text.Substring(0, selectionStart),
CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator,
Text.Substring(SelectionStart + SelectionLength)
);
Select(selectionStart + 1, 0);
}
else
{
base.OnKeyDown(e);
}
}
最佳答案
您可以将SelectedText-property设置为分隔符,而不是替换整个Text-property:
if (e.KeyCode == Keys.Decimal)
{
e.Handled = true;
e.SuppressKeyPress = true;
SelectedText = CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator;
}
else base.OnKeyDown(e);
关于c# - 在到达文本框之前修改字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4484208/