我在 .Net 4.0 上开发的 PowerPoint VSTO 加载项中创建了一个任务窗格。在任务窗格上,我有一个文本框,用户必须在其中输入数字数据。要求如下:
用户可以通过在每一行输入一个数据来输入多个数字数据。每个数据最多可包含 8 个字符,包括:数字、小数和逗号。如果一行超过 8 个字符,则应将其截断为 8 个字符。
下面是我正在使用的代码:
public void splitString(string[] strText)
{
string[] arr = txtEntryField.Lines;
for (int n = 0; n < arr.Length; n++)
{
if (arr[n].Length > 8)
{
arr[n] = arr[n].Substring(0, 8);
}
}
txtEntryField.Lines = arr;
if (txtEntryField.Lines.Length > 0)
{
txtEntryField.SelectionStart = txtEntryField.Text.Length;
}
}
我在 txtEntryField_TextChanged 事件上调用此方法。虽然我快到了,但我认为操作和用户体验并不是那么顺利。
更新了代码,使用户无法在文本框中输入字符。这是通过以下代码完成的:
void txtEntryField1_KeyPress(object sender, KeyPressEventArgs e)
{
const char Delete = (char)8;
var regex = new Regex(@"[^.,0-9\s]");
if (regex.IsMatch(e.KeyChar.ToString()) && e.KeyChar != Delete && e.KeyChar != (char)Keys.Enter && e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
任何人都可以帮助我提供更好的解决方案吗?任何帮助都是最受欢迎的。谢谢。