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 回答