1

.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;
        }
    }

より良い解決策を教えてくれる人はいますか? どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1