.Net 4.0 で開発した PowerPoint VSTO アドインでタスク ペインを作成しました。タスク ペインには、ユーザーが数値データのみを入力する必要があるテキスト ボックスがあります。要件は以下の通りです。
ユーザーは、各行に 1 つのデータを入力することにより、複数の数値データを入力できます。各データには、数字、小数、コンマを含む最大 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;
}
}
より良い解決策を教えてくれる人はいますか? どんな助けでも大歓迎です。ありがとう。