为什么可以';t在文本框中按CTRL+A或CTRL+Backspace

本文关键字:CTRL+A CTRL+Backspace 文本 为什么 | 更新日期: 2023-09-27 18:29:38

如果我尝试按CTRL+A(选择文本框中的所有文本),它会发出窗口错误噪音。

如果我尝试按CTRL+Backspace(删除最后一个单词而不是最后一个字符),它只会插入窗口中的"未知字符"(看起来像一个矩形)。

这只是一个文本框,我没有更改任何属性。

为什么可以';t在文本框中按CTRL+A或CTRL+Backspace

作为Hans Passant said

Ctrl+A实际上在这种模式下不起作用,您必须自己实现它。使用KeyDown事件处理程序并不困难。

要实现您想要的,您可以使用textboxKeyDown事件

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Control)
        {
            if (e.KeyCode == Keys.A)
            {
                textBox1.SelectAll();
            }
            if (e.KeyCode == Keys.Back)
            {
                e.SuppressKeyPress = true;
                int selStart = textBox1.SelectionStart;
                while (selStart > 0 && textBox1.Text.Substring(selStart - 1, 1) == " ")
                {
                    selStart--;
                }
                int prevSpacePos = -1;
                if (selStart != 0)
                {
                    prevSpacePos = textBox1.Text.LastIndexOf(' ', selStart - 1);
                }
                textBox1.Select(prevSpacePos + 1, textBox1.SelectionStart - prevSpacePos - 1);
                textBox1.SelectedText = "";
            }
        }
    }