【问题标题】:Why can't I press CTRL+A or CTRL+Backspace in my textbox?为什么我不能在我的文本框中按 CTRL+A 或 CTRL+Backspace?
【发布时间】:2013-08-31 00:21:21
【问题描述】:

如果我尝试按 CTRL+A (选择文本框中的所有文本),则会产生 Windows 错误噪音。

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

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

【问题讨论】:

  • 请考虑使用winformswpf 进行标记... 还是在两个平台上都会发生这种情况?
  • 我无法重现这个。您需要edit 提供更多详细信息,因为这里没有任何信息。
  • 您忘记提及您已将 Multiline 属性设置为 True。是的,Ctrl+A 在该模式下实际上不起作用,您必须自己实现它。使用 KeyDown 事件处理程序并不难。
  • 因为是documented才能这样工作。
  • 我明白,我只是好奇为什么它不(如果你知道的话)

标签: c# winforms textbox


【解决方案1】:

作为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 = "";
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-03
    • 2015-02-25
    • 1970-01-01
    • 2014-12-13
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    相关资源
    最近更新 更多