0

Windows フォームで仮想テンキーを設計しています。Delの文字を削除するキーを持っているとしtextboxます。textbox初めてクリックして選択し、Delキーを押すと、カーソル位置に対して文字が正しく削除されます。しかし、テキストの内容を更新した後、SelectionStartプロパティがゼロに変わり、点滅しているカーソルが消えました。内容を更新textboxして最後に変更する前に、その値を一時的に保存することで、この問題を解決しました。

tempSelectionStart = enteredTextbox.SelectionStart; //save SelectionStart value temporarily 
enteredTextbox.Text = enteredTextbox.Text.Substring(0, enteredTextbox.SelectionStart - 1)
                    + enteredTextbox.Text.Substring(enteredTextbox.SelectionStart,
                      enteredTextbox.Text.Length - (enteredTextbox.SelectionStart));
enteredTextbox.SelectionStart = tempSelectionStart-1;

私は知りたいです:

  1. 問題を解決するためのよりエレガントな方法はありますか?
  2. キーを初めて押した後、テキストボックスでカーソルの点滅を保持するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

2

代わりに SelectedText プロパティを使用します。

private void DeleteButton_Click(object sender, EventArgs e) {
    if (textBox1.SelectionLength == 0) textBox1.SelectionLength = 1;
    textBox1.SelectedText = "";
    textBox1.Focus();
}

private void BackspaceButton_Click(object sender, EventArgs e) {
    if (textBox1.SelectionLength == 0) {
        if (textBox1.SelectionStart > 0) {
            textBox1.SelectionStart--;
            textBox1.SelectionLength = 1;
        }
    }
    textBox1.SelectedText = "";
    textBox1.Focus();
}
于 2015-09-01T11:25:15.757 に答える