c# - 如何使多行文本框不接受 Enter 和 Backspace

标签 c# .net winforms textbox multiline

我有一个多行文本框,不应接受字母、数字、换行符(输入键)和退格键。简而言之,textbox.Text 不应该是可编辑的。但我确实希望文本框接受两个快捷键 - control 和 control+R。使文本框不可编辑的一种方法是将其设为只读。但是文本框根本不会接受任何击键。简而言之,我的快捷键(control和control+R)在只读方法中不起作用(Control+R)。

任何人都可以在这方面提供帮助吗?这就是我所要做的。

我在这里可以做的一件事是不要将文本框设置为只读,然后限制可以在文本框中输入的字符(字母和数字)。使用此代码:

    private void txtResult_KeyPress(object sender, KeyPressEventArgs e)
    {
        // only modifier keys, escape, enter, backspace etc is accepted now
        e.Handled = !char.IsControl(e.KeyChar);
    }

    private void txtResult_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Control == true)
        {
            if (e.KeyCode == Keys.R)
            {
                // do something
            }
            else
            {
                //do something
            }
        }

        if (e.KeyCode == Keys.Escape)
        {
            //do something
        }
    }

通过这种技术,我可以使用快捷键(control 和 control+R)。但这种方法的问题是 Enter 和 Backspace 键也可以编辑文本框的文本。如何专门限制从文本框中注册 Enter 和 Backspace 键,但让 Control 和 Escape 键注册?

最佳答案

您尝试过SuppressKeyPress = true吗?

private void textBox2_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control == true)
            {
                if (e.KeyCode == Keys.R)
                {
                    // do something
                }
                else
                {
                    //do something
                }
            }
            else
                e.SuppressKeyPress = true;


        }

关于c# - 如何使多行文本框不接受 Enter 和 Backspace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5636050/

相关文章:

c# - 执行 .bat 文件时 ExitCode 始终为 0

c# - 如何在 silverlight 中获取当前 URL 的某一部分?

c# - 使用 ftp 将文件从一台服务器传输到不同位置的另一台服务器

c# - 是否可以在 winforms 应用程序中定义左手组合框(即左侧的滚动条)?

c# - 连续发送鼠标位置到另一台机器

c# - DataGridView CellFormatting 事件阻止表单绘制

c# - 从 Windows 系统写入具有 Samba 服务器的 Linux 系统中存在的文件

c# - 使用 Sort() 按特定条件对列表数据进行排序,

C# - 查找输出

c# - 我必须取消订阅所有事件处理程序吗?